我需要一个Java方法,该方法可以将“从Unix纪元开始以来经过的毫秒数”转换为“从公元前4713年1月1日起经过的天数”。 Java是否已实现此功能?
我尝试了几种选择。其中一些不编译。其中一些与在线(http://www.onlineconversion.com/julian_date.htm)上可用的转换不一致。因此,请只发表您满意使用的答案。
最佳答案
从JDateTime尝试Jodd。这是日期时间类,它对朱利安日期编号执行所有计算。 JdateTime类具有友好的用户界面,任何时候您都可以获取Julian Date的值。例如,您可以使用eppo毫秒实例化该类,然后读取Julian日期编号:
JDateTime jdt = new JDateTime(milliseconds);
JulianDateStamp jds = jdt.getJulianDate();
// or:
double jdn = jdt.getJulianDateDouble()
// or:
int jdn = jdt.getJulianDateNumber()
如果您对具体计算感兴趣,请参见方法TimeUtil#toJulianDate。它基于成熟的天文算法,但也要注意浮点数的计算误差。这就是为什么结果是JulianDateStamp,该类分别保存JD整数及其分数的原因,以提供高达1毫秒的精度。此类还编写了许多测试用例。