這個工具能做什麼
這個工具可在儒略曆(西元前 45 年制定,凡能被 4 整除的年份皆為閏年)與格里曆(即西元 1582 年的曆法改革,每 400 年去掉 3 個閏日)之間互換日期。只要輸入其中一種曆法的日期,就會回傳另一種曆法的對應日期。這是純粹的天文/西曆換算,全球通用,並不限於特定地區。
使用方式
先選擇來源曆法(即你輸入的日期所採用的系統),結果則會以另一種系統呈現。接著選定紀年方式(公元 AD/CE 或公元前 BC/BCE),再輸入年、月、日。工具會回報換算後的紀年、年、月、日,同時附上中介的儒略日數(JDN),以及日數差(該日期格里曆比儒略曆領先幾天)。
公式說明
最乾淨、最精準的換算方式,是先轉換成 JDN——一種與任何曆法都無關的整數日數計數。步驟 A 是用標準整數公式(儒略曆版與格里曆版各一)把來源的(年、月、日)轉成 JDN;步驟 B 再把該 JDN 轉換到另一種曆法。格里曆版公式為:
$$\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$$儒略曆版公式為:
$$\text{JDN} = D + \left\lfloor\frac{153m+2}{5}\right\rfloor + 365y + \left\lfloor\frac{y}{4}\right\rfloor - 32083$$所有除法都採用數學上的向下取整(floor)除法;公元前年份則使用天文紀年法:公元前第 B 年對應的天文年為 \(1 - B\)(公元前 1 年 = 0,公元前 45 年 = -44),因此跨越第 0 年來回換算都能完全準確。
實際範例
以格里曆公元 1582-06-15 為例。當 Yastro = 1582 時,格里曆轉 JDN 的公式得出 \(\text{JDN} = 2299039\)。再把這個 JDN 轉回儒略曆,會得到 1582-06-05。換言之,格里曆 1582 年 6 月 15 日等於儒略曆 1582 年 6 月 5 日——當時格里曆比儒略曆早了 10 天,恰好對應 1582 年 10 月的曆法改革(dayDifference = +10)。
常見問題
有第 0 年嗎?沒有。在紀年系統中,公元前 1 年的下一年直接就是公元 1 年。但在程式內部,我們採用天文紀年法,將第 0 年視為公元前 1 年,這樣運算才能連續無斷層。
為什麼叫「外推」(proleptic)?這類換算會把各曆法的規則套用到所有日期上,即使是該曆法在歷史上尚未存在的時期也一樣。它並不會反映不同國家在不同時間採用格里曆改革的史實。
日數差隨時間會有多大?大約在西元 200 年前後為 0 天,1582 年為 +10 天,1900–2099 年為 +13 天,2100 年起則為 +14 天。