這個計算器的功能
「日期加減天數計算器」能幫你算出從任一起始日期往前或往後推算指定天數後,落在哪一個西曆日期上。無論你想知道「從今天算起 90 天後是幾月幾號」,還是「45 天前是哪一天」,這個工具都能立刻給出答案,並同時告訴你那天是星期幾。它適用於任何西曆日期,並能正確處理每個月天數不同、閏年、以及跨年等情況。
使用方式
輸入你的起始日期(年、月、日),選擇要加上還是減去天數,再填入天數。計算器會以 YYYY-MM-DD 格式回傳推算後的日期,並附上當天的星期幾。這是一個通用的日期工具,除了採用標準西曆之外,不預設任何特定國家或曆法的規則。
計算原理說明
與其直接去處理各月天數不一與閏年的麻煩,這個工具會先把起始日期轉換成儒略日數(Julian Day Number,JDN)——也就是一個連續累計的天數編號。如此一來,加減 \(N\) 天就只是簡單的整數運算:
$$\text{JDN}_{out} = \text{JDN}(\text{起始}) \pm N$$算出結果後,再把它轉回年、月、日。星期幾則由 \(\text{JDN} \bmod 7\) 求得。這種做法精確無誤,能避免逐日累加迴圈常見的進位與誤差問題。
$$\text{JDN} = d + \left\lfloor\frac{153m+2}{5}\right\rfloor + 365y + \left\lfloor\frac{y}{4}\right\rfloor - \left\lfloor\frac{y}{100}\right\rfloor + \left\lfloor\frac{y}{400}\right\rfloor - 32045$$
實例演算
以 2024-01-01 為起點,加上 30 天。2024-01-01 的儒略日數為 2,460,311,加上 30 得到 \(2{,}460{,}311 + 30 = 2{,}460{,}341\),轉換回來即為 2024-01-31。由於 2024 年是閏年,計算過程會自然地把一月的 31 天納入考量。若再多加一天(共 31 天),結果便會跨入 2024-02-01。
關鍵術語解釋
- 朱利安日數(JDN)
- 自公元前4713年1月1日中午協調世界時(按推算朱利安曆法)以來的整天連續計數。由於每個日期都對應一個單一的整數,加減天數變成簡單的整數運算:將日期轉換為其JDN,加上或減去偏移量,然後轉換回來。這避免了手動處理月份長度和閏年的複雜性。
- 格里高利曆
- 當今世界大多數地區使用的民用曆法,由教宗格列高利十三世於1582年引進。它定義一年為365天,在特定規則下添加閏日,平均年長度為365.2425天,密切跟蹤太陽年。
- 推算格里高利曆
- 將格里高利曆擴展應用於其1582年引入之前的日期。計算器使用它,使得歷史或極早期的日期遵循相同的一致閏年規則,確保跨越任何時代的JDN運算不中斷。
- 閏年
- 包含366天(含2月29日)的一年。格里高利曆年是閏年,如果它能被4整除,除了世紀年,世紀年也必須能被400整除。因此2000年和2024年是閏年,但1900年和2100年不是。
- 模運算得出的平日
- 直接使用模運算從JDN導出的一週中的某一天。因為一週的天數每7天重複一次,計算 \((\text{JDN} + 1) \bmod 7\) 得出0到6的值,該值對應一個平日(JDN 0為星期一)。這讓計算器可以為任何結果日期命名平日,無需查詢表。
常見問題
它能處理閏年嗎?可以。儒略日數的計算方式本身就已涵蓋閏年與各月天數的差異,因此閏年的 2 月 29 日也能正確處理。
可以跨年嗎?完全沒問題。只要加的天數足夠,結果就會自動往後推進到下一年(減去天數時則會回到前一年),無需任何額外操作。
它使用哪一種曆法?採用外推西曆(proleptic Gregorian calendar),也就是當今全球通用的標準民用曆法。