【问题标题】:Before 1 CE/AD Algorithms make calendar calculations tricky在 1 CE/AD 算法使日历计算变得棘手之前
【发布时间】:2017-08-06 04:58:10
【问题描述】:

我做了更多研究,以下是各个算法的输出:

JD 1099114.5

PHP:公元前 1704 年 3 月 3 日12:00:00(PHP 内部转换器) FLN:公元前 1703 年 3 月 0 日12:00:00(弗利格尔-范弗兰德) MEU:公元前 1703 年 3 月 18 日 12:00:00(Jean Meeus “天文算法,第 2 版,已更正) 丰富:公元前 1703 年 3 月 4 日12:00:00(Richards 在解释性补充第 3 版中)

每种算法都有其问题和关于开始时间等方面的怪癖。

Meeus 假设存在公历 0 年(介于 -1 和 1 之间),即使这在天文学上是正确的,但从日历的角度来看也没有什么意义。从技术上讲,所有转换为公历日期的结果都是错误的?

【问题讨论】:

  • 您在此处介绍的两个函数都将愉快地返回年份为 0 的日期,而 PHP 的内置函数则不会。这很重要,因为那里有is no year 0
  • 谢谢你,有没有办法纠正这个问题?

标签: php date julian-date


【解决方案1】:

一个有用的参考是http://aa.usno.navy.mil/publications/docs/c15_usb_online.pdf,由 E. G. Richards,天文年历解释性补充第 15 章,大学科学书籍,2013 年。在第 591 页上解释了当前在 1740 年雅克·卡西尼 (Jacques Cassini) 引入 AD 1 之前的年份使用负年份表示法,并且在 1 年和 -1 年之间有 0 年。在第 592 页上指出,周二 -4712 年 1 月 1 日(儒略历)的儒略日数为 1。实验表明,只有当天文年份编号包括 0 年时,才会出现这种情况。儒略日数的来源在D. McCarthy 和 B. Guinot 在“时间”一章中与“公元前 4713 年 1 月 1 日”相同的书在本书的任何地方,我都找不到任何提示,说明年份的编号方式应该有所不同,具体取决于使用的是儒略历还是公历。

Fourmilab 日历转换器https://www.fourmilab.ch/documents/calendar/ 是一个很好的转换器,有一个怪癖:它使用负号而不是 AD/BC 来进行年份编号,但认为公历有 0 年,而儒略历没有0 年,我认为这是一个错误。纠正这个错误,它说原始海报的儒略日期 1507900(我假设 1507900.0 准确)是公历 5 月 22 日中午 -584 或儒略历 5 月 28 日 -584。这些日期可用于比较评估各种算法的正确性。

【讨论】:

    【解决方案2】:

    Meeus 的算法实际上是错误的(感谢 Paul 指出这一点)公历年不应该有 0,这意味着公历 1 年之前的所有日期(即 Gyr = 1) 已正确转换。此外,他只有 1582G 后日期的转换器。

    因此,正确的日期似乎是 PHP 提供的 jdtogregorian 转换器列出的日期。

    【讨论】:

      猜你喜欢
      • 2012-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-01
      • 2011-04-06
      • 2019-01-08
      • 1970-01-01
      相关资源
      最近更新 更多