這個計算器能做什麼
這款年齡計算器會精確算出從出生日期(或任何起始日期)到指定日期之間實際經過了多少時間。它不會只丟給你一個小數,而是把時間差拆解成完整的年數、月數,再加上剩餘的天數——就像我們平常描述年齡的方式,例如「32 歲又 4 個月又 18 天」。
使用方法
先分別填入出生日期的年、月、日,再輸入指定日期(預設為今天)。按下計算後,結果就會顯示完整的拆解。一般來說,指定日期應該等於或晚於出生日期。
計算公式說明
計算時會先逐項相減:年 = \(Y_2 - Y_1\)、月 = \(M_2 - M_1\)、日 = \(D_2 - D_1\)。完整的拆解公式為:
$$\text{Age} = (Y_2 - Y_1)\ \text{years},\ (M_2 - M_1)\ \text{months},\ (D_2 - D_1)\ \text{days (with borrow)}$$由於每個月的天數不同,加上年份可能是閏年,因此需要兩次「借位」來修正出現的負數。如果天數為負,就加上指定日期前一個月的實際天數,並把月數減 1:
$$D = D_2 - D_1 + \text{daysInPrevMonth},\quad M = M - 1$$若這時月數也變成負數,就加上 12,再把年數減 1:
$$M = M_2 - M_1 + 12,\quad Y = Y - 1$$閏年(能被 4 整除,但若能被 100 整除則須同時能被 400 整除)都會被正確判斷,所以 2 月會準確地算成 28 天或 29 天。
實際範例
出生日期為 2000-01-15,指定日期為 2024-03-10。天數:\(10 - 15 = -5\),因此向 2024 年 2 月借位(閏年,共 29 天):
$$10 - 15 + 29 = 24\ \text{天}$$月數則減 1。月數:\(3 - 1 - 1 = 1\)。年數:\(2024 - 2000 = 24\)。結果為:24 年 1 個月 24 天。
主要術語解釋
- 出生日期
- 兩個日期中較早的一個 — 該人(或項目)開始的日期。在公式中,它提供了 birthYear、birthMonth 和 birthDay 的值,這些值從截止日期中減去。
- 截止日期
- 您測量到的參考日期(通常是今天)。它提供 toYear、toMonth 和 toDay。年齡是從出生日期到此點為止經過的時間。
- 閏年
- 包含 366 天的年份,添加了 2 月 29 日。在公曆中,如果一年能被 4 整除,則該年是閏年,但世紀年除外,世紀年也必須能被 400 整除(所以 2000 年是閏年,但 1900 年不是)。只要 2 月 29 日落在該間隔內,閏年就會影響日期計數。
- 日曆借位
- 保持結果非負的調整。如果日期差異 \(D<0\),您借用一個月:將前一個月的天數添加到 \(D\) 中,並將 \(M\) 減少 1。如果月份差異 \(M<0\),您借用一年:將 12 添加到 \(M\) 並將 \(Y\) 減少 1。這反映了普通減法中的借位。
- daysInPrevMonth
- 緊接在截止月份之前的日曆月份的長度(28、29、30 或 31 天)— 在日期借位期間添加到 \(D\) 的值。由於月份長度不同,「完成」一個不完整月份的確切天數不是固定的,這就是為什麼年齡(以天為單位)無法僅從年份和月份推導出來。
- 已過月份與十進制年份
- 已過月份計算實際完成的整個日曆月份(例如 18 個月),保留真實的月份邊界。十進制年份將總天數除以平均年長(例如 365.25)以得到像 1.52 年這樣的數字。十進制年份便於平均計算,但會失去確切的日曆結構;(年、月、日)的分解精確到實際日曆。
常見問題
會處理閏年嗎?會。2 月的天數與借位計算都完整套用閏年規則。
如果指定日期早於出生日期會怎樣?結果可能出現負數;若要得到有意義的年齡,請讓指定日期等於或晚於出生日期。
為什麼要拆成年、月、天?因為這正是我們平常描述年齡的習慣,比起單一的小數年數更直覺、更容易理解。