当我在joda time API中为某些julian double值调用setJulianDate方法时,我收到了invalidArgument异常。

JDateTime jdt = new JDateTime();
JulianDateStamp jdstamp = new JulianDateStamp(julianDateDouble);
jdt.setJulianDate(jdstamp);
System.out.println(jdt);


什么时候

Double julianDateDouble = (double)2452555.13;


我得到了java.lang.IllegalArgumentException:值太大:1​​000错误。但是,当

Double julianDateDouble = (double)2452558.67;


双julian值已正确转换为2002-10-11 04:04:48.000。对于我拥有的一堆朱利安日期值,也会发生同样的情况。

最佳答案

我不确定,但是一切似乎都指向浮点数的精度。您可以将重载的构造函数用于接受JulianDateStampBigDecimal

BigDecimal julianDateDouble = new BigDecimal("2452555.13");
JDateTime jdt = new JDateTime();
JulianDateStamp jdstamp = new JulianDateStamp(julianDateDouble);
jdt.setJulianDate(jdstamp);
System.out.println(jdt);


版画

2002-10-07 15:07:12.000


已通过this Julian Date Converter验证。

如果输入形式为double,请使用

Double dob = (double)2452555.13;
System.out.println(dob);
BigDecimal julianDateDouble = new BigDecimal(dob.toString());

09-25 18:04