請輸入出生日期和基準日(想知道哪一天的年齡)。會一次算出實歲,以及用月數、週數、天數、小時、分鐘、秒表示的年齡,和距離下次生日的天數。
這個頁面可以做什麼
- 只要輸入出生日期,就能當場知道實歲(幾歲幾個月幾天)。指定基準日,也能算出「到職日當天」「考試當天」等任何一天的年齡
- 同時顯示以月數、週數、天數(出生天數)、小時、分鐘、秒表示的年齡,以及距離下次生日還有幾天
- 可以直接用來「確認履歷表上要填的年齡」「算寶寶出生幾個月又幾天」「算紀念日過了幾天」
- 淺顯易懂的實歲算法(公式)解說,以及可直接複製到 Excel、Google 試算表(DATEDIF 函數)、Python 的公式,也都整理在這個頁面
這個計算有什麼用?
履歷表或各種申請表的年齡欄,填的是實歲。生日快到的時候,填表當天和截止日(或「某年某月某日時」)的年齡可能不同,所以最保險的做法是算出表單要求那一天的年齡。
「報名當天須滿 16 歲」這類考試或比賽的年齡條件,也能用同樣的計算確認。
在台灣,入學當年 9 月 1 日滿 6 歲的兒童,就在那年 9 月進國民小學。輸入孩子的出生日期,基準日填該年的 9 月 1 日,就能確認那天是否已滿 6 歲。
例如 2020 年 9 月 3 日出生的孩子,在 2026 年 9 月 1 日還是 5 歲,所以要到 2027 年才上國小。詳細請以戶籍所在地教育局的入學通知為準。
許多權利和制度從特定年齡開始。在台灣,成年年齡自 2023 年起是 18 歲,選舉權是 20 歲,公民投票是 18 歲。把基準日改成未來的日期,就能知道那時幾歲,或距離下次生日還有幾天。
年齡的算法可能因規定而不同,規劃前請務必向主管機關確認正確的規定。
兒童健康檢查、預防接種的時程,以及開始吃副食品的時機等,大多用「出生滿幾個月」來說明。月數以下個月的同一個日期(對應日)算滿,所以月底出生、不容易算「滿 1 個月是哪天」的寶寶,本計算機也能算出正確的答案。
「以天數表示」也是以出生當天為第 0 天,符合一般出生天數的算法。
「結婚幾天了?」「交往 1000 天是哪一天?」這類紀念日的計算,只要把出生日期換成紀念日,就能用同樣的公式算。
要注意的是,這裡的「天數」是以開始那天為第 0 天的經過天數。如果想把開始那天算第 1 天來慶祝「第 1000 天」,那麼經過 999 天的那天就是「第 1000 天」。規劃慶祝前,請先決定要用哪種算法。
公式
符號與用語解說
符號
| \(A\) | A | 實歲(幾歲),取自表示年齡的英文 Age 的字首。 |
| \(Y_1\)、\(Y_2\) | 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\) | d | 實歲公式的修正項。當年的生日還沒到時是 1,生日當天或已經過了時是 0。 |
| \(M\)、\(m\) | M(大寫、小寫) | 總月數(\(M\))和零頭的月數(\(m\))。「36 歲 5 個月」時 \(m = 5\),總月數是 \(M = 12 \times 36 + 5 = 437\) 個月。 |
| \(N\) | N | 出生以來的經過天數(出生天數)。以出生當天為第 0 天,數日曆上實際的天數。 |
| \(W\)、\(r\) | W、r | 週數(\(W\))和零頭的天數(\(r\))。經過天數除以 7 的商是 \(W\),餘數是 \(r\)。 |
| \(T_h,\ T_m,\ T_s\) | T 下標 h、T 下標 m、T 下標 s | 把經過的時間以小時(hours)、分鐘(minutes)、秒(seconds)表示的值。右下角的小字(下標)是單位英文的字首。 |
用語
| 實歲 | 以出生當天為 0 歲,每過一次生日就加 1 歲的算法,也叫足歲、周歲。在台灣,身分證件、公文書和日常生活中說的年齡,原則上都是實歲。 |
| 虛歲 | 華人傳統的年齡算法:出生時就算 1 歲,之後每過一次農曆新年(春節)就加 1 歲,所以通常比實歲大 1~2 歲。農曆新年在國曆上的日期每年都不同,本計算機不計算虛歲。日本傳統的算法則是在國曆 1 月 1 日加 1 歲,和台灣的虛歲也不同。 |
| 對應日 | 下個月或下一年的「同一個日期」。例如 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 歲計算。法律或各機關的算法不一定相同,遇到資格判斷時請確認相關規定。 |
| 入學年齡基準日 | 判斷入學年齡的日期。在台灣,以入學當年 9 月 1 日滿 6 歲的兒童進國民小學(國民教育法施行細則)。生日在 9 月初基準日之後的孩子要晚一年入學,會成為班上年紀最大的一群;生日在 8 月左右的孩子則是班上年紀最小的。 |
| 出生天數 | 以出生當天為第 0 天所數的天數。本計算機的「以天數表示」就是這種算法。和「出生第幾天」(出生當天算第 1 天)會差 1 天,請注意。 |
| 成年年齡 | 在台灣,民法規定的成年年齡自 2023 年 1 月 1 日起由 20 歲下修為 18 歲,滿 18 歲就能自己簽約、租屋、開戶。不過選舉權(投票選總統、立委等)依憲法仍是 20 歲,公民投票則是 18 歲。 |
建議先了解的基礎知識
為了讓您「理解意義」地使用本頁的計算,這裡整理了事先了解會更好懂的基礎知識。
遇到不懂的地方,回頭複習這些內容是最快的方法。
| 大數的減法(國小低~中年級,7~10 歲) |
|
| 時刻與時間、日曆(國小低~中年級,7~10 歲) |
|
| 乘法直式(國小中年級,8~10 歲) |
|
| 有餘數的除法(國小中年級,8~10 歲) |
|
用 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 |
| 總月數 | =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") |
第一個表格的 B3=36、B4=5、B5=18,所以是「36 歲 5 個月 18 天」。第二個表格的總天數是 13,318 天,也就是 1,902 週又 4 天。如果「=B2-B1」顯示成日期,請把儲存格格式改成「數值」。
注意: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 |
| 總月數 | =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") |
和 Excel 一樣,DATEDIF 的「MD」在月底附近可能會差 1~2 天。
用 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{其他}) \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>其他</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 的特色
不需專業知識,操作直覺又簡單
無須登錄任何個人資料
按下「下載」後自動刪除檔案
無須標註來源出處
亦無須事先取得商用授權