当我在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:值太大:1000错误。但是,当
Double julianDateDouble = (double)2452558.67;
双julian值已正确转换为2002-10-11 04:04:48.000。对于我拥有的一堆朱利安日期值,也会发生同样的情况。
最佳答案
我不确定,但是一切似乎都指向浮点数的精度。您可以将重载的构造函数用于接受JulianDateStamp
的BigDecimal
。
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());