ToolActToolAct

年齢計算機

正確な年齢、干支、次の誕生日を計算

年齢計算機

年齢計算機とは?

年齢計算機は、生年月日から満年齢、残りの月数と日数、これまでに生きた総日数、次の誕生日までの日数を分かりやすく表示するツールです。申込書、学校やイベントの年齢条件、家族の記録、誕生日の準備など、手計算では間違えやすい確認に向いています。年齢は現在の年から生まれた年を引くだけでは決まりません。誕生日が今年すでに過ぎたか、うるう年か、2 月 29 日生まれか、月の日数がどう違うかによって結果が変わります。このツールはブラウザの今日の日付を基準にします。公式な資格や締切は、書類や機関が指定する基準日で確認してください。

使い方

使い方

  1. 生年月日を入力してください
  2. 「年齢を計算」をクリックして結果パネルを更新
  3. 正確な年齢、経過日数、次の誕生日、星座を確認

注意事項

  • 原資料と同じ暦法を使用してください。結果は丸めた年齢ではなく、経過した正確な日数に基づきます。
  • 法的・学校・保険関連の書類では、対象制度が誕生日・暦年・地域行政規則のいずれで年齢を数えるかを事前に確認してください。

利用シーン

生年月日から現在の正確な年齢を求める過去の生年月日を入力すると、デバイスのローカル日付を基準に満年齢、残り月数、残り日数を表示します。未来の日付は入力できないため、現在の年齢確認に集中できます。生年月日はブラウザタブ内にのみ存在し、ネットワークリクエストで外部に送信されることなく、ページを閉じた時点で消去されるため、個人や家族の情報をクラウドログや共有デバイスに残しません。
プロフィールや書類、家族記録向けの正確な表記を用意する総日数、総週数、総時間数、次の誕生日、誕生日までの日数を活用すれば、学校の入学書類、スポーツリーグの締切、会員更新、誕生日カード、家譜、記念アーカイブなど、年齢だけでは粗い場面で日単位の精度を提供できます。
干支を誕生日と一緒に確認する結果には生まれ年を12で割った余りから算出された十二支が含まれるため、誕生日メモ、グリーティングカード、家族記録、占いの参照、日常的な会話などで、年齢と干支を一度の計算で同時に確認でき、別途干支検索ツールに入力し直す必要がありません。
誕生日カウントダウンをカレンダー日ベースで計画する生年月日を入力した後、次の誕生日と誕生日までの日数を利用して、お祝いメッセージの送信、家族へのリマインド、プロフィール更新、サプライズの計画、SNS投稿などのスケジュールを立てられます。カウントはデバイスのローカル日付からの暦日で計算されるため、学校の締切、営業日ルール、公式の期限については受入先の規則を別途確認してください。
2月29日生まれの計算をズレなく処理するうるう日生まれの場合、非うるう年では次の誕生日カウントダウンが2月28日と3月1日のどちらに寄るかが結果に表示されるため、どちらの慣例に従うか判断できます。学校、官公庁、保険会社、届出先の書類によって公式の基準は異なるため、ツールのローカルな慣例と届出先のルールが一致するか必ず確認してください。

仕組み

満年齢の計算は365.25日での単純除算ではなく、暦を考慮した引き算を用いる。アルゴリズムはtoday.year - birth.yearを求め、todayの(月、日)がbirthの(月、日)より前であれば1を引く。これは戸籍などで使われるグレゴリオ暦の慣例に合致する:1990-06-15生まれの人は2026-06-15の00:00(ローカル時刻)に正確に36歳になり、36 × 365.25日後ではない。残りの月数と日数は、前の月の実際の長さ(28〜31日)を使って上位単位から借りる方式で計算される。これが、総日数の単純な剰余では月の境界付近でオフバイワンエラーが生じる理由である。 総日数、週数、時間数はミリ秒差分(today.getTime() - birth.getTime())を86,400,000 ms/日で割って導出する。計算機はデバイスのローカル時刻を読み取るため、ホストのIANAタイムゾーンとアクティブなDSTオフセットを暗黙的に継承する。日単位の年齢としては問題ないが、DST遷移をまたぐと時間数が±1ずれることがある。JavaScriptのDateオブジェクトは0始まりの月(1月 = 0)を返すため、手作りの実装では最も頻繁にバグの原因となり、結果がDST不変である必要がある場合はDate.UTC()が推奨される。 十二支は(year - 4)mod 12で正準順序(子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥、西暦4年 = 子)に対して算出される。厳密にはサイクルは1月1日ではなく旧正月で切り替わるため、グレゴリオ暦の1月や2月上旬の誕生日は旧暦では前の動物に属する可能性がある。閏日(2月29日)のエッジケースには世界的なルールがない:英国のコモンローおよびBirths and Deaths Registration Actは非うるう年の誕生日を3月1日と扱い、米国やオーストラリアの多くでは2月28日を使用する。表示されるカウントダウンはデフォルト値であり、関連法令で確認すべきである。

  • 年数差分アルゴリズム:years = today.year - birth.year - (today.MMDD < birth.MMDD ? 1 : 0)。うるう年の後にドリフトする365.25日近似を回避する
  • ミリ秒計算:total days = floor((Date.now() - birthMs) / 86_400_000)。精度はIEEE 754倍精度浮動小数点により、エポックから±100,000,000日のDate全範囲で約±0.5 msに制限される
  • グレゴリオ暦のうるう年ルール:4で割り切れる年が対象、ただし100で割り切れる年は400で割り切れない限り除外(1900年は平年、2000年はうるう年)。平均年長は365.2425日であり、365.25日ではない
  • 2月29日生まれの誕生日:非うるう年の法的誕生日は管轄による(英国コモンローおよびBirths and Deaths Registration Act 1953 §4では3月1日、米国の多くの州では2月28日、ニュージーランドと一部のコモンウェルス諸国では3月1日)。ツールはデフォルトを選び、両候補日を表示する
  • 十二支:動物 = ZODIAC[(year - 4) mod 12]。旧正月は1月21日〜2月21日の間に来るため、年初のグレゴリオ暦誕生日は完全な精度には旧暦の検索が必要
  • タイムゾーン:Date.getFullYear/getMonth/getDateはホストのIANAゾーンを読み、UTC深夜付近の誕生日では表示年齢が1日ずれる可能性がある。DST不変性が必要な場合はDate.UTC系を使用
  • JavaScriptの落とし穴:月は0始まり(0 = 1月)、new Date('YYYY-MM-DD')はUTCとして解釈されるのに対しnew Date('YYYY/MM/DD')はローカル時刻として解釈され、getDayは日曜日に0を返す

使用例

基本的な年齢計算

生年月日 1990-06-15 を入力すると、35歳11か月18日と表示 (2026-06-02 時点)

誕生日カウントダウン

生年月日 1985-12-25 を入力すると、次の誕生日 (クリスマス) までの日数を表示

干支の表示

2000年生まれは辰 (たつ)、1996年生まれは子 (ねずみ) と表示

よくある質問

正確な年齢はどのように計算されますか?

生年月日から本日までを、年・月・日に分けて表示するほか、合計の日数、週数、時間、分、秒も表示します。「年齢(年)」は誕生月日を過ぎた時点でカウントアップする方式で、公的書類の年齢表記と一致します。

なぜ年齢が予想より1歳少なく表示されるのですか?

今年の誕生日がまだ来ていない可能性が高いです。本計算機は法的年齢の慣例に従っており、30歳になるのは30回目の誕生日を迎えた後であって、その年の1月1日ではありません。東アジアの「数え年(虛歲)」では出生時に1歳とし、旧正月ごとに1歳加えますが、本ツールは国際標準に基づいています。

「今日」はどのタイムゾーンを基準にしていますか?

お使いのデバイスのローカルタイムゾーンです。タイムゾーンをまたいで移動した場合、表示される秒数は数時間ずれることがありますが、年月日のカウントはカレンダー日付を比較するため影響を受けません。

2月29日生まれの場合はどう扱われますか?

うるう年でない年は、本ページでは既定で3月1日を誕生日として扱います(多くの法的管轄区域の慣例に合致しています)。一部の地域では2月28日を採用するため、法的に正確な日付が重要な場合は、お住まいの地域のルールをご確認ください。

次の誕生日はいつですか?

「次の誕生日」セクションには日付と残り日数が表示されます。曜日も表示されるため、計画を立てやすくなります。うるう年でない年の2月29日生まれの場合は、表示される3月1日と並んで、次の本来の2月29日も示されます。

星座や干支は計算されますか?

はい。西洋の星座は月日から計算されます。十二支は出生年の旧正月を基準に計算されるため、1月や2月生まれの場合、暦年ではなく前年の干支が表示されることがありますが、これが正しい結果です。

生年月日はどこかに保存・送信されますか?

いいえ。計算は完全にブラウザ内で完結します。ページを更新すれば入力は消去され、何も記録・送信されません。