1. ホーム
  2. javascript

[解決済み] 生年月日をYYYYMMDDのフォーマットで入力して年齢を計算する。

2022-03-16 04:55:09

質問

生年月日がYYYYMMDD形式である場合、年齢を計算するにはどうしたらいいですか?この場合 Date() 関数を使用してください。

今使っているものよりも良い解決策を探しています。

var dob = '19800810';
var year = Number(dob.substr(0, 4));
var month = Number(dob.substr(4, 2)) - 1;
var day = Number(dob.substr(6, 2));
var today = new Date();
var age = today.getFullYear() - year;
if (today.getMonth() < month || (today.getMonth() == month && today.getDate() < day)) {
  age--;
}
alert(age);

解決方法は?

私なら読みやすさを追求します。

function _calculateAge(birthday) { // birthday is a date
    var ageDifMs = Date.now() - birthday.getTime();
    var ageDate = new Date(ageDifMs); // miliseconds from epoch
    return Math.abs(ageDate.getUTCFullYear() - 1970);
}

免責事項 これも精度の問題があるので、完全に信用することはできません。年によっては数時間ずれることもありますし、サマータイム中もずれることがあります(タイムゾーンによる)。

もし、精度を重視するのであれば、ライブラリなどを利用することをお勧めします。また @Naveens post は、時間帯に依存しないため、おそらく最も正確です。