コンテンツにスキップ

年齢計算機 — 年、月、日での正確な年齢

生年月日を入力すると、年・月・日の単位での正確な年齢をすぐに計算する無料の年齢計算機。総週数、総日数、総時間数も同時に表示するほか、次の誕生日までの残り日数もわかるので、記念日の確認や年齢を証明する書類の作成準備、周囲へのお祝いの贈り物の計画づくりにも幅広く役立てられる。

年齢計算機

正確な年齢
36 年 7 ヶ月 26 日

あなたは Monday

次の誕生日: 127日後 (37歳になります)

他の単位での年齢

ヶ月
439
週
1,912
日
13,387
時間
321,288
分
19,277,280
秒
1,156,636,800

人生の進捗

あなたの年齢と、説明的な80年の参照期間。

年齢の視覚化3636 / 80 年080
ローディング計算機...
📚

ドキュメンテーション

年齢計算機とは何ですか?

年齢計算機は、生年月日と基準日(通常は今日)という2つの日付の間の正確な期間を求めます。結果は年・月・日で表示されるほか、週、日、時間、分、秒の累計でも表示されます。過去や未来の日付に対する年齢も計算でき、その日にその人が何歳だったか、または何歳になるかが分かります。

年齢の計算方法

年齢とは、2つの暦日付の間隔です。この間隔を表す正しい方法は2つあり、目的に応じてどちらも役立ちます。

暦による年齢(年、月、日)

これは、「33歳、4か月、5日」のように、日常的に年齢を表す方法です。次の3段階で求めます。

  1. 生年月日から経過した満年数を数える。
  2. 直近の誕生日から経過した満月数を数える。
  3. そこから残りの日数を数える。

ステップ3は、月末付近でややこしくなります。月によって日数が異なるためです。1月31日生まれの人の年齢を3月1日に測ると、1か月と1日です。1月31日の1か月後は2月28日(うるう年では2月29日)です。2月31日は存在しないためです。3月1日はその1日後です。この方法は、広めたPythonライブラリにちなんでrelativedelta規則と呼ばれることもあり、応当日を短いほうの月の最終日に丸めることで、日数が負にならないようにします。

経過時間の合計(日、時間、秒)

経過した時間を正確に数えるには、両方の日付を1つの時点に変換し、その差を満日数で求めます。

日数 = floor((基準日 − 生年月日) ÷ 86,400,000ミリ秒)

引き算の前に、両方の日付をUTC(協定世界時)の午前零時に設定します。これにより、夏時間の変更によって1時間が加算または減算され、日数がずれることを防ぎます。日数の合計から、週数は日数を7で割って切り捨てます。時間、分、秒は、日数にそれぞれ24、1,440、86,400を掛けて求めます。

経過日数の合計を365または365.25で割ると、年単位のおおよその年齢が得られますが、その期間に含まれる年のうち、どれがうるう年かは考慮されません。上で説明した暦による計算は正確です。「私は何歳ですか」という問いには暦による年齢を使います。服薬時刻の計測や、記念日までのカウントダウンなど、正確な経過時間が必要な処理には、合計日数または週数を使います。

計算例

2000年1月1日生まれの人を、2020年1月1日時点で計算した場合:

項目値
暦による年齢20年0か月0日
合計日数7,305
合計週数1,043
生まれた曜日土曜日

合計7,305日は、20×365に、うるう年2000、2004、2008、2012、2016の分として5日のうるう日を加えた値に等しくなります。これらの年にはそれぞれ、20年の期間内に収まる2月29日が加わりました。そのため、日数は単純な20×365より多くなり、手計算では数日ずれやすいのです。

コードによる年齢計算式

上記の暦による年齢計算法は、ほとんどのプログラミング言語で実装できます。うるう年や月の日数の規則を手作業で記述するより、組み込みの日付ライブラリを使うほうが安全です。

1from dateutil.relativedelta import relativedelta
2from datetime import date
3
4birth, target = date(2000, 1, 1), date(2020, 1, 1)
5
6age = relativedelta(target, birth)     # calendar age
7print(f"{age.years}y {age.months}m {age.days}d")
8
9total_days = (target - birth).days     # total elapsed days
10print(total_days)                      # 7305
11

MicrosoftはDATEDIFの「MD」単位を推奨していません。負の数、ゼロ、または不正確な結果が返されることがあります。

よくある質問

自分の正確な年齢を知るにはどうすればよいですか? 生年月日を入力し、基準日は今日のままにします。結果には、年、月、日による年齢と、合計日数、週数、時間数、秒数による同じ年齢が表示されます。

2つの年齢計算機で答えが異なるのはなぜですか? 通常は、月の境界付近で残りの日数をどのように数えるかが違うためです。上で説明したように月末に、その月の短い日数に合わせて調整する計算機は、経過時間を単純に30で割る計算機と、1日または2日異なることがあります。

計算にうるう年は考慮されていますか。 はい。合計日数には2つの日付の間にあるすべての2月29日が含まれ、2月29日生まれの人は、うるう年でない年には2月28日を基準に年齢が測られます。

過去や未来の日付に対する年齢も計算できますか。 はい。基準日を未来の日付にすると、その日に何歳になるかが分かります。過去の日付にすると、何歳だったかが分かります。

タイムゾーンは結果に影響しますか? いいえ。日数を数える前に両方の日付をUTCの午前零時に変換するため、ユーザーの所在地や夏時間の変更にかかわらず合計は同じです。

日数を365.25で割った結果と日数のカウントが異なるのはなぜですか? 365.25は1年の平均的な長さにすぎず、その期間に含まれる具体的な年のうち、どれが366日間のうるう年かは追跡しません。実際の2つの暦日付の間にある満日数を数える方法は正確です。

参考文献

  1. dateutil project. relativedelta. dateutil relativedeltaドキュメント — 加算した月が短い月の末日を超える場合は、その月の最終日が使われます。
  2. MDN Web Docs (Mozilla). Date. MDN Dateリファレンス — JavaScriptの日付は、UTCの1970年1月1日からのミリ秒数です。±8.64 × 10¹⁵ msは±100,000,000日に等しいため、1日は86,400,000 msです。
  3. U.S. Naval Observatory. Leap Years. USNOうるう年FAQ — 4で割り切れる年はうるう年ですが、400で割り切れない世紀年は除きます。2000年はうるう年です。
  4. Microsoft. DATEDIF function. Microsoftサポート: DATEDIF — 「Y」「YM」「MD」の単位と、「MD」の既知の制限。