ブログに戻る
1 min read

JavaScriptで年齢を計算する方法(生年月日から年、月、日まで)

JavaScript で生年月日から年齢を計算する実用的な方法を学びます。正確な年、月、日、現在の日付オプション、タイム ゾーンやうるう年などのよくある落とし穴が含まれます。

JavaScriptで年齢を計算する方法(生年月日から年、月、日まで)

JavaScript で生年月日 (DOB) から人の年齢を計算する必要がある場合は、いくつかの方法で実行できます。重要なのは、年齢:

が何を意味するのかを決めることです。
  • 修了年数 (最も一般的)
  • 正確な年齢 (年、月、日)
  • 特定の日付時点の年齢 (今日とは限りません)

1) 完了した年で年齢を計算します(シンプルで正確)

これが標準的なアプローチです。年を引き、今年誕生日がまだ起こっていない場合は調整します。

関数 ageInyears(dob, asOf = new Date()) {
  const 誕生 = 新しい日付(dob);
  const ref = 新しい日付(asOf);

  let years = ref.getFull Year() -birth.getFull Year();
  const m = ref.getMonth() -birth.getMonth();

  if (m < 0 || (m === 0 && ref.getDate() < Birth.getDate())) {
    年--;
  }

  年を返します。
}

例: DOB 2000-02-10 および 2026-02-09 時点では 25 (明日の誕生日) になります。

2) 正確な年齢 (年、月、日) を計算します

正確な内訳が必要な場合は、必要に応じて前月から「借用」して、最初に年、次に月、次に日数を計算できます。

関数 strictAge(dob, asOf = new Date()) {
  const 誕生 = 新しい日付(dob);
  const ref = 新しい日付(asOf);

  let years = ref.getFull Year() -birth.getFull Year();
  let months = ref.getMonth() -birth.getMonth();
  let days = ref.getDate() -birth.getDate();

  // 前月から借用して日数を調整します
  if (日 < 0) {
    const prevMonth = new Date(ref.getFull Year(), ref.getMonth(), 0); // 0日目 = 前月の末日
    日数 += prevMonth.getDate();
    数ヶ月--;
  }

  // 前年から借用して月を調整します
  if (月 < 0) {
    月 += 12;
    年--;
  }

  { 年、月、日 } を返します。
}

注: 月日のエッジケース (31 日の DOB など) では、慎重なテストが必要です。すべてのロケールおよび特殊なケースにわたって堅牢なものが必要な場合は、十分にテストされた日付ライブラリの使用を検討してください。

3) 過去または将来の日付の年齢には「現在」の日付を使用します

多くのアプリでは、特定の基準日 (保険、資格規定、学年度の区切り) での有効期限が必要です。上記の両方の関数は asOf パラメータを受け入れるため、次のことができます:

年齢年('1995-06-20', '2030-01-01');
正確な年齢('1995-06-20', '2030-01-01');

よくある落とし穴 (およびその回避方法)

  • タイムゾーン: YYYY-MM-DD の解析は環境によって異なる動作をする可能性があります。日付のみを気にする場合は、現地時間で日付を作成します: new Date(year, monthIndex, day).
  • 閏日の誕生日: 閏年以外の 2 月 29 日のルールを決定します (2 月 28 日または 3 月 1 日)。一貫性を保ってください。
  • 無効な入力: DOB が将来の日付ではなく実際の日付であることを検証します。

簡単なオプション: オンライン年齢計算ツールを使用する

あなたが答えが必要な場合(または実装を検証したい場合)は、無料の計算ツールを使用してください: オンラインで年齢を計算する

関連ガイド

よくある質問

年齢を計算する最も正確な方法は何ですか?

ほとんどの場合、「完済年数」(整数の年齢)が標準です。完全な内訳が必要な場合は、最初に年、次に月、次に日を計算し、月の長さや閏年などの特殊なケースをテストします。

JavaScript が日付文字列に間違った日を与える場合があるのはなぜですか?

新しい日付('YYYY-MM-DD')は、一部の環境では UTC として解釈される可能性があるためです。ローカルのカレンダーの日付が気になる場合は、部分を解析して new Date(y, m, d)] を使用します。