見出し画像

JavaScript で生年月日からの年齢計算

🟦年齢の計算方法

もともとは PHP の案件で、生年月日から年齢を取得する必要があり、調べたところ以下の計算式にたどり着きました。JavaScrip でいう YYYYMMDD 形式の日付を数字として計算させる方法です。

( 今日の日付 - 生年月日 ) / 10000 の整数部分

🟦PHPでの記述

上の計算式を用いて PHP で年齢を求める場合は下記のようになります。

// 生年月日が1990年5月5日の場合
$year  = 1990;
$month = 5;
$day   = 5;
$birthdayObj = new DateTime($year.'-'.$month.'-'.$day);
$todayObj    = new DateTime();
$age = floor( ( $todayObj->format('Ymd') - $birthdayObj->format('Ymd') ) / 10000 );
echo($age.'歳');

🟦JavaScript での記述

「javascript 年齢 」で検索した場合、冒頭の計算式での方法がなかなかみつけられません。getFullYear() とか getMonth() + 1 などでフォーマットをあわせるのもなかなか大変ですから。。。但し、toLocaleDateString() を使うと次のように記述できます。toLocaleDateString() で "ja-JP" とした場合、1990/5/5 で戻ってくるのに対し "sv-SE" の場合、1990-05-05 の形で得られるため、YYYYMMDD 形式が得られやすくなります。timeZone:"Asia/Tokyo" は、今回不要と思われますが、私個人の気分的な理由で挿入しています。

// 生年月日が1990年5月5日の場合
const year  = 1990;
const month = 5;
const day   = 5;
let birthday = new Date(year,month-1,day).toLocaleDateString("sv-SE",{timeZone:"Asia/Tokyo"}).replace(/[^0-9]/g,"");
let today    = new Date().toLocaleDateString("sv-SE",{timeZone:"Asia/Tokyo"}).replace(/[^0-9]/g,"");
let age = Math.floor((today - birthday) / 10000);
console.log(age + "歳");

🟦関数にする

折角ですので、上記の PHP および JavaScript のコードを実用的な関数にしてみます。

ここから先は

1,233字

¥ 100

この記事が気に入ったらサポートをしてみませんか?