2017-08-06 78 views
2

我沒有更多的一些研究,以下是各個算法的輸出:前1個CE/AD算法使日曆計算棘手

JD 1099114.5

PHP:1704年3月3日B.C.E. 12:00:00(PHP內部轉換器) FLN:0 Mar 1703 B.C.E. 12:00:00(Fliegel-Van Flandern) MEU:1703年3月18日12:00:00(Jean Meeus「天文算法」,第二版,更正) RICH:4 Mar 033 BCE 12:00:00(Richards在解釋補充第三版)

每個算法都有它的問題和有關啓動時間等怪癖

Meeus假設有一個公曆年0(-1到1之間),即使這是正確的天文數字從技術上說,所有的公式轉換成陽曆的結果都是錯誤的嗎?

+0

您在這裏展示的兩個函數都會愉快地返回年份爲0的日期,而PHP的內置函數則不會。這是非常重要的,因爲[*沒有年份0 *](https://en.wikipedia.org/wiki/Anno_Domini#No_year_zero_.2F_Start_and_end_of_a_century)。 –

+0

謝謝你,有沒有辦法糾正? –

回答

1

一個有用的參考是http://aa.usno.navy.mil/publications/docs/c15_usb_online.pdf,由EG理查茲解釋補充的第15章至天文年曆第三版,大學科技圖書,2013年在591頁中解釋的負面年目前使用的表示法1740年雅克卡西尼介紹了公元1年前的年份,,年份爲1年和1年之間。在第592頁上,它指出,星期二-4712年1月1日(朱利安日曆)的朱利安日數是1.實驗表明,這隻能在天文年數包括0年的情況下進行。朱利安日數的起源在D.麥卡錫的「時間」一書中的同一本書& B.吉諾特,如「公元前4713年1月1日」本書中沒有任何地方可以找到任何暗示年份編號應該有所不同的提示,這取決於是否使用朱利安或格里曆日曆。

的Fourmilab日曆轉換器https://www.fourmilab.ch/documents/calendar/是一個很好的轉換器,一個怪癖:它使用負號,而不是AD/BC爲一年編號,但認爲公曆有一年0,儒略曆不有0年,我認爲這是一個錯誤。糾正這個錯誤,它說原始海報的儒略日期1507900(我假設1507900.0正好)是中午-584年5月22日格里曆,或-584年5月28日儒歷。這些日期可用於比較評估各種算法的正確性。

0

Meeus的算法實際上是錯誤的(感謝Paul對pointi在公曆年中不應該爲0,這意味着公曆年之前的所有日期(即公元1年)。 Gyr < 0)出錯。 Gyr後(Gyr> = 1)正確轉換。另外,他只有1582G的日期轉換器。

因此,似乎正確的日期是PHP提供的jdtogregorian轉換器列出的日期。