JavaScript で生年月日からの年齢計算
🟦年齢の計算方法
もともとは PHP の案件で、生年月日から年齢を取得する必要があり、調べたところ以下の計算式にたどり着きました。JavaScrip でいう YYYYMMDD 形式の日付を数字として計算させる方法です。
🟦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
この記事が気に入ったらチップで応援してみませんか?