为什么日历转换库围绕朱利安时代?

时间:2011-12-22 02:41:33

标签: algorithm calendar julian

我正在编写一些PHP代码,用于将日历从公历转换为希伯来日历。看看php日历函数,我发现它具有从Gregorian到Julian天和Julian天转换成希伯来语的功能。但是,我没有找到直接从格里高利转换为希伯来语的功能。

出于好奇,我想知道是否可以进行直接转换。虽然在研究这个问题时,我发现将日期转换为Julian天,然后转换为所需的日历系统似乎是标准的。

我在以下几个库中找到了这个: http://www.php.net/manual/en/ref.calendar.php http://www.fourmilab.ch/documents/calendar/calendar.js

并在论坛帖子中提到: http://www.physicsforums.com/showthread.php?t=173119

什么是烦我的原因!这是某个团体决定的标准吗?这是历史性的吗?

提出直接转换日期的算法会不会更有效率?或者相反,是什么让朱利安时代如此高效?

1 个答案:

答案 0 :(得分:7)

如果您想在n个不同的日历之间进行转换,并且您实施的算法可以从任何一种格式转换为任何其他格式,那么您需要n^2 - n转换算法。但是,如果改为编写算法将任何日历格式转换为一种基线日历格式,然后编写算法以从基线格式转换为任何其他格式,则只需编写2(n-1)算法。

这些日历格式都代表着同样的事情,时间。表示时间的最基本方式是从某个参考点开始经过的时间量,因此最有意义的是作为基线格式。这正是Julian Date是自格林威治中午4713年1月1日以来的天数。

您可能会认为从一种格式转换为Julian Date然后再转换为另一种格式会更慢,但是任何专门的转换算法本质上都会采用输入日期,将其转换为某些中性转换日期表示然后转换为到所需的日历格式。但是,由于Julian Date是一种简单的单数格式,因此实际上与转换为Julian Date然后转换为其他格式相同,因此性能增益可以忽略不计。此外,日历转换可能不是任何应用程序性能的瓶颈,因此从它们中挤出最可能的性能可能并不能很好地利用任何人的时间。