生年月日と基準日(何日時点の年齢を知りたいか)を入力してください。満年齢と数え年のほか、月数・週数・日数・時間・分・秒での表し方と、次の誕生日までの日数もまとめて計算します。
このページでできること
- 生年月日を入れるだけで、満年齢(◯歳◯ヶ月◯日)がその場でわかります。基準日を指定すれば「入社日時点」「試験日時点」など、好きな日付時点の年齢も計算できます
- 七五三・厄年・長寿のお祝いなどで使う「数え年」(生まれた時点を1歳とし、お正月に1歳増える数え方)もあわせて表示します
- 年齢を月数・週数・日数(生後日数)・時間・分・秒で表した値と、次の誕生日まであと何日かも同時にまとめて表示します
- 「履歴書に書く年齢の確認」「赤ちゃんの生後◯ヶ月◯日」「記念日から何日たったか」の計算にそのまま使えます
- 満年齢の数え方(式)のやさしい解説・Excel/Googleスプレッドシート(DATEDIF関数)・Python用のコピペ数式・計算ドリル(演習問題)もこのページにまとまっています
この計算は何の役に立つ?
履歴書の年齢欄に書くのは満年齢で、提出日(または企業が指定する基準日)時点の年齢を書くのが一般的です。誕生日が近い時期は「書類を書いた日」と「提出する日」で年齢が変わることがあるので、提出日を基準にして満年齢を数え直しておくと安心です。
資格試験の出願などで「試験日時点で満◯歳以上」のような条件がある場合も、同じ計算で確認できます。
学年は「4月2日生まれから翌年4月1日生まれまで」で区切られます。4月1日生まれが前の学年(早生まれ)に入るのは、法律上は誕生日の前日(3月31日=学年の最終日)に満6歳になるためです。
「◯年4月1日時点で満◯歳」のような入園条件を考えるときは、法律上の判定が前日加齢である点に注意が必要です。「誕生日当日に1歳増える」数え方と比べると、基準日の翌日が誕生日にあたる場合だけ1日ずれます(例:2023年4月2日生まれの子は、2026年4月1日時点でこの数え方では2歳ですが、法律上は4月1日に3歳に達したと扱われます)。誕生日当日は、どちらの数え方でも同じ年齢で一致します。
選挙権や成人年齢の「満18歳」も、法律上は誕生日の前日の終わりに達すると扱われます。このため、投票日の翌日が18歳の誕生日という人も、投票日のうちに18歳に達する扱いになるため投票できる、という一見不思議なことが起こります。
「自分(子ども)が次の選挙で投票できるか」を考えるときは、誕生日から1日引いて考えるのがポイントです。
「60歳到達」「65歳到達」「18歳到達後最初の3月31日まで」のような年齢の条件は、公的な制度では誕生日の前日基準で判定されるのが一般的です。
制度の細かい判定日は制度ごとに異なるので最終的には公式の案内で確認が必要ですが、まず満年齢と誕生日の位置関係を正確に押さえておくことが、手続きの計画を立てる第一歩になります。
乳幼児健診や予防接種のスケジュール、離乳食を始める時期の目安などは「生後◯ヶ月」で案内されることがほとんどです。「1ヶ月」は翌月の同じ日付(応当日)で数えるので、月末生まれの赤ちゃんでは「1ヶ月後」がいつなのか迷いがちですが、応当日の考え方を知っていれば正確に数えられます。
生まれた日を0日と数える「生後日数」も、産院や母子手帳の数え方と同じです。
「結婚してから何日」「付き合って1000日」のような記念日の計算も、生年月日の代わりに記念日を入れれば同じ式でできます。
1つだけ注意があります。この計算機の「日数」は当日を0日と数える経過日数なので、当日を1日目と数える「◯日目」で祝いたい場合は、経過日数999日の日が「1000日目」になります。どちらの数え方で祝うかを先に決めておくとすれ違いがありません。
式
用語・記号の解説
記号
| \(A\) | エー | 満年齢(何歳か)。年齢を表す英語 Age の頭文字です。 |
| \(Y_1\)・\(Y_2\) | ワイ・いち、ワイ・に | 生まれた年(\(Y_1\))と基準日の年(\(Y_2\))。どちらも西暦で考えます。(例:1990年生まれ・2026年時点なら \(Y_1 = 1990\)、\(Y_2 = 2026\)) |
| \((M_2, D_2) < (M_1, D_1)\) | 月日の組の比較 | 「基準日の月日(\(M_2, D_2\))が誕生日の月日(\(M_1, D_1\))より前」という意味。まず月同士を比べ、月が同じときだけ日同士を比べます。辞書で見出し語を引くときと同じ順番の比べ方です。 |
| \(d\) | ディー | 満年齢の式の補正項。その年の誕生日がまだ来ていなければ1、誕生日当日か過ぎていれば0になります。 |
| \(M\)・\(m\) | エム(大文字・小文字) | 総月数(\(M\))と端数の月(\(m\))。「36歳5ヶ月」なら \(m = 5\)、総月数は \(M = 12 \times 36 + 5 = 437\) ヶ月です。 |
| \(N\) | エヌ | 生まれてからの経過日数(生後日数)。生まれた当日を0日として、カレンダー上の実際の日数を数えます。 |
| \(W\)・\(r\) | ダブリュー、アール | 週数(\(W\))と端数の日(\(r\))。経過日数を7で割った商が \(W\)、余りが \(r\) です。 |
| \(T_h,\ T_m,\ T_s\) | ティー・エイチ、ティー・エム、ティー・エス | 経過した長さを時間(hours)・分(minutes)・秒(seconds)で表した値。右下の小さい文字(添え字)は単位の英語の頭文字です。 |
用語
| 満年齢 | まんねんれい | 生まれた日を0歳として、誕生日が来るたびに1歳ずつ増える数え方。現在の日本で公的な書類や日常会話で使われる年齢は、原則この満年齢です。 |
| 数え年 | かぞえどし | 生まれた時点を1歳とし、お正月(1月1日)を迎えるたびに1歳増える昔ながらの数え方。満年齢より1〜2歳大きくなります。七五三・厄年・長寿のお祝いなどで今も使われることがあります。 |
| 応当日 | おうとうび | 翌月や翌年の「同じ日付」のこと。1月15日の翌月の応当日は2月15日です。「◯ヶ月」の端数は、この応当日に達したかどうかで数えます(民法の期間計算と同じ考え方)。1月31日のように翌月に同じ日付がない場合はその月の末日で代用し、末日が終わった時点で1ヶ月と数えます。例えば2023年1月31日生まれの赤ちゃんは、2023年2月28日時点では「0ヶ月28日」(まだ1ヶ月とは数えない)、3月1日時点で「1ヶ月1日」になります。この場合、端数の日は代用した末日(2月28日)から数え直すため、「0ヶ月28日」の翌日がいきなり「1ヶ月1日」となり、「ちょうど1ヶ月0日」となる日は存在しません。 |
| うるう年 | うるうどし | 2月29日がある年。原則4年に1回ですが、100で割り切れる年は平年、400で割り切れる年はうるう年です(2100年は平年、2000年はうるう年)。2月29日生まれの人は、この計算機では平年は3月1日に1歳増える扱いです。法律上は誕生日の前日に加齢するため、平年でも2月28日の終わりに歳をとります。 |
| 早生まれ | はやうまれ | 1月1日〜4月1日生まれのこと。法律上は誕生日の「前日」に年をとるため、4月1日生まれの人は3月31日(学年の最終日)に満6歳となり、前の学年に入ります。学年の区切りが「4月2日生まれから翌年4月1日生まれまで」なのはこのためです。 |
| 生後日数 | せいごにっすう | 生まれた日を0日として数えた日数。この計算機の「日数で表すと」はこの数え方です。「生まれて何日目」(生まれた日を1日目と数える)とは1日ずれるので注意してください。 |
| 年齢計算ニ関スル法律 | ねんれいけいさんにかんするほうりつ | 年齢の数え方を定めた明治35年の法律。民法143条とあわせて、法律上の年齢は誕生日の「前日」の満了時(前日の終わり)に1歳増えると扱われます。選挙権・年金・児童手当などの資格判定はこの前日基準で行われるため、「誕生日当日に1歳増える」とする日常の感覚(この計算機の方式)と1日ずれる場合があります。 |
前提として理解しておくといいこと
このページの計算を「意味がわかって」使えるようになるために、前提として理解しておくといいことをまとめました。
つまずいたら、この表の内容に戻って復習するのが近道です。
| 大きな数の引き算(小学2〜3年) |
|
| 時こくと時間・暦のしくみ(小学2〜3年) |
|
| 掛け算の筆算(小学3年) |
|
| 余りのある割り算(小学3年) |
|
Excelで計算する方法
| 生年月日 | 1990/1/15 |
| 基準日 | 2026/7/3 |
| 満年齢(歳) | =DATEDIF(B1,B2,"Y") |
| 端数の月 | =DATEDIF(B1,B2,"YM") |
| 端数の日 | =DATEDIF(B1,B2,"MD") |
| 生年月日 | 1990/1/15 |
| 基準日 | 2026/7/3 |
| 数え年(歳) | =YEAR(B2)-YEAR(B1)+1 |
| 生年月日 | 1990/1/15 |
| 基準日 | 2026/7/3 |
| 総月数 | =DATEDIF(B1,B2,"M") |
| 総日数(生後日数) | =B2-B1 |
| 週数 | =INT((B2-B1)/7) |
| 端数の日(週の余り) | =MOD(B2-B1,7) |
| 生年月日 | 1990/1/15 |
| 基準日 | 2026/7/3 |
| 時間で表すと | =(B2-B1)*24 |
| 分で表すと | =(B2-B1)*1440 |
| 秒で表すと | =(B2-B1)*86400 |
| 生年月日 | 1990/1/15 |
| 今日時点の満年齢(歳) | =DATEDIF(B1,TODAY(),"Y") |
1つ目の表の例なら、B3=36、B4=5、B5=18、つまり「36歳5ヶ月18日」になります。3つ目の表では総日数が13,318日、週数が1,902週と4日です。「=B2-B1」の結果が日付の形で表示されてしまったら、セルの表示形式を「数値」に変えてください。
数え年(2つ目の表)は、誕生日が来たかどうかに関係なく「年の差+1」で決まるので、YEAR関数で年だけを取り出して引き算し、生まれた時点を1歳と数える分の1を足すだけで求められます。例の場合は 2026−1990+1=37歳です。
注意:DATEDIFの "MD" は月末がらみの日付(31日生まれなど)で、本計算機の応当日方式と1〜2日ずれたり、まれにおかしな値になったりすることが知られています。日数の端数が大事な場面では本計算機の結果を目安にしてください。
最後の表のようにTODAY()を使うと、ファイルを開くたびに「今日時点の年齢」に自動更新されて便利です。
Googleスプレッドシートで計算する方法
| 生年月日 | 1990/1/15 |
| 基準日 | 2026/7/3 |
| 満年齢(歳) | =DATEDIF(B1,B2,"Y") |
| 端数の月 | =DATEDIF(B1,B2,"YM") |
| 端数の日 | =DATEDIF(B1,B2,"MD") |
| 生年月日 | 1990/1/15 |
| 基準日 | 2026/7/3 |
| 数え年(歳) | =YEAR(B2)-YEAR(B1)+1 |
| 生年月日 | 1990/1/15 |
| 基準日 | 2026/7/3 |
| 総月数 | =DATEDIF(B1,B2,"M") |
| 総日数(生後日数) | =B2-B1 |
| 週数 | =INT((B2-B1)/7) |
| 端数の日(週の余り) | =MOD(B2-B1,7) |
| 生年月日 | 1990/1/15 |
| 基準日 | 2026/7/3 |
| 時間で表すと | =(B2-B1)*24 |
| 分で表すと | =(B2-B1)*1440 |
| 秒で表すと | =(B2-B1)*86400 |
| 生年月日 | 1990/1/15 |
| 今日時点の満年齢(歳) | =DATEDIF(B1,TODAY(),"Y") |
数え年(2つ目の表)は、YEAR関数で年だけを取り出して「年の差+1」を計算しています。例の場合は 2026−1990+1=37歳です。
DATEDIFの "MD" が月末がらみで1〜2日ずれることがある点も、Excelと同じです。
Pythonで計算する方法
from datetime import date
birth = date(1990, 1, 15) # 生年月日
ref = date(2026, 7, 3) # 基準日(今日にするなら date.today() )
# 満年齢:年の引き算 −(誕生日がまだ来ていなければ 1)
age = ref.year - birth.year - ((ref.month, ref.day) < (birth.month, birth.day))
total_days = (ref - birth).days # 生まれてからの経過日数(生後日数)
weeks, extra_days = divmod(total_days, 7) # 週数と端数の日
print(f"満年齢: {age}歳")
print(f"経過日数: {total_days}日({weeks}週と{extra_days}日)")
print(f"時間: {total_days * 24}時間 / 分: {total_days * 1440}分 / 秒: {total_days * 86400}秒")
数式記述言語(LaTeX等)での書き方(コピペ可)
A = Y₂ − Y₁ − d(d:基準日がその年の誕生日より前なら1、誕生日当日以後なら0)
A = Y_2 - Y_1 - d, \quad d = \begin{cases} 1 & ((M_2, D_2) < (M_1, D_1)) \\ 0 & (\text{otherwise}) \end{cases}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>A</mi><mo>=</mo>
<msub><mi>Y</mi><mn>2</mn></msub><mo>−</mo>
<msub><mi>Y</mi><mn>1</mn></msub><mo>−</mo>
<mi>d</mi><mo>,</mo><mspace width="0.7em"/>
<mi>d</mi><mo>=</mo>
<mrow>
<mo>{</mo>
<mtable columnalign="center left">
<mtr>
<mtd><mn>1</mn></mtd>
<mtd><mrow><mo>(</mo><msub><mi>M</mi><mn>2</mn></msub><mo>,</mo><msub><mi>D</mi><mn>2</mn></msub><mo>)</mo><mo><</mo><mo>(</mo><msub><mi>M</mi><mn>1</mn></msub><mo>,</mo><msub><mi>D</mi><mn>1</mn></msub><mo>)</mo></mrow></mtd>
</mtr>
<mtr>
<mtd><mn>0</mn></mtd>
<mtd><mtext>otherwise</mtext></mtd>
</mtr>
</mtable>
</mrow>
</mrow>
</math>
A = Y_2 - Y_1 - d, d = {(1, if (M_2, D_2) < (M_1, D_1)), (0, otherwise):}
age = y2 - y1 - Boole[m2 < m1 || (m2 == m1 && d2 < d1)]
age := y2 - y1 - piecewise(m2 < m1 or (m2 = m1 and d2 < d1), 1, 0);
age = y2 - y1 - (m2 < m1 | (m2 == m1 & d2 < d1));
A = Y_2 - Y_1 - d(d:基準日がその年の誕生日より前なら1、誕生日当日以後なら0)
M = 12A + m
M = 12A + m
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>M</mi><mo>=</mo>
<mn>12</mn><mi>A</mi>
<mo>+</mo><mi>m</mi>
</mrow>
</math>
M = 12A + m
totalMonths = 12*age + extraMonths
totalMonths := 12*age + extraMonths;
total_months = 12*age + extra_months;
M = 12A + m
Tₕ = 24N, Tₘ = 1440N, Tₛ = 86400N, N = 7W + r (0 ≤ r ≤ 6)
T_h = 24N,\quad T_m = 1440N,\quad T_s = 86400N,\quad N = 7W + r\ \ (0 \le r \le 6)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msub><mi>T</mi><mi>h</mi></msub><mo>=</mo><mn>24</mn><mi>N</mi><mo>,</mo><mspace width="0.7em"/>
<msub><mi>T</mi><mi>m</mi></msub><mo>=</mo><mn>1440</mn><mi>N</mi><mo>,</mo><mspace width="0.7em"/>
<msub><mi>T</mi><mi>s</mi></msub><mo>=</mo><mn>86400</mn><mi>N</mi><mo>,</mo><mspace width="0.7em"/>
<mi>N</mi><mo>=</mo><mn>7</mn><mi>W</mi><mo>+</mo><mi>r</mi><mspace width="0.7em"/>
<mo>(</mo><mn>0</mn><mo>≤</mo><mi>r</mi><mo>≤</mo><mn>6</mn><mo>)</mo>
</mrow>
</math>
T_h = 24N, T_m = 1440N, T_s = 86400N, N = 7W + r (0 <= r <= 6)
hours = 24*days; minutes = 1440*days; seconds = 86400*days; {weeks, remDays} = QuotientRemainder[days, 7]
hours := 24*days; minutes := 1440*days; seconds := 86400*days; weeks := iquo(days, 7); remDays := irem(days, 7);
num_hours = 24*num_days; num_minutes = 1440*num_days; num_seconds = 86400*num_days; num_weeks = floor(num_days/7); rem_days = mod(num_days, 7);
T_h = 24N, T_m = 1440N, T_s = 86400N, N = 7W + r (0 ≤ r ≤ 6)
ChatGPT に聞いて計算してもらう方法
あなたは年齢計算アシスタントです。次の計算を、必ずPythonコードを実際に実行して行い、実行結果の数値だけを根拠に回答してください(暗算や推測で答えないでください)。 生年月日は1990年1月15日です。2026年7月3日時点について、次の値をそれぞれ求めてください。 1. 満年齢(◯歳◯ヶ月◯日。「1ヶ月」は翌月の同じ日付(応当日)に達したときに数え、応当日がない月はその月の末日の終わりで1ヶ月と数える方式で) 2. 生まれてからの総日数(生まれた当日を0日と数える)と、それを週で表した「◯週と◯日」 3. 次の誕生日(誕生日当日に1歳増えるものとする)まで、あと何日か 計算に使ったコードと、実行結果の数値を示してください。
計算ドリル(演習問題)
このページの式を、自分の手で計算できるようになるための演習問題です。
答えと解説は解答ページにあります。
使い方
-
1数値を入力計算したい数値を入力欄に入力します
-
2計算「計算する」ボタンを押します
-
3結果を確認計算結果がその場に表示されます。計算の考え方や式の解説も同じページで確認できます
DataChefの特徴
専門知識不要、直感的で簡単な操作
個人情報を登録することなく使用できます
「ダウンロード」押下でファイルを自動削除
クレジット表記不要
商用利用許諾の連絡も不要です
