我维护一个PHP / Flash应用程序,它在代码中使用Julian日期,只转换为Gregorian进行显示。在我用Date数据类型替换整数Julian日期之前,我想知道使用Julian是否有好处?这应该改变吗?
其中一个问题是能够快速查看数据库中的日期。我在其中一个表中添加了一个日期时间戳来纠正这个问题,但现在我们正在转向一个新的数据库并有机会进行改进,所以离开朱利安日期就好像要做的事情。那我为什么不想这样做呢?原始开发者不再在这里。
答案 0 :(得分:5)
对于日期/时间管理,您希望所有瞬间都使用简单,单调的线性比例。人类日历,时区,夏令时,这些使事情变得更加复杂,最好保存在显示层。
常见的比例是将时刻编码为自特定原点以来的秒数(或毫秒)。在Java中,您将使用自1970年1月1日以来的00:00:00 UTC(也称为“Epoch”)的毫秒数;你也会忽略闰秒,以便在任何日历中转换到任何日期和时间都是纯粹的算法。该比例是System.currentTimeMillis()
返回的比例。在Unix世界中,您可以使用自Epoch以来 seconds 的数量,因为这是Unix内核易于返回的内容(通过time()
系统调用)。
这种线性标度可以轻松比较日期和计算时间间隔,而基于日历的任何内容都会使这种计算变得更加困难。
所以我的建议是远离朱利安日期,但当然不是将它们转换为格里高利日期。事实恰恰相反。
答案 1 :(得分:2)
希望这有帮助, 最好的祝福, 汤姆。
答案 2 :(得分:1)
我看不出有任何理由不使用Date类。您可以非常轻松地使用它在unixtime之间来回(尽管闪存使用毫秒而不是秒),这就是我建议用于来回通信的内容。
另一个问题;如果您决定使用常规的unixtime,则不能在Flash中使用int / uint数据类型,因为它们会溢出,您必须使用Number。
答案 3 :(得分:0)
数字日期,例如Julian Dates或Unix纪元,计算起来更容易...... n小时的时间或两个任意日期之间的时差可以非常容易地计算出来......