Java 在JSR-310中计算修改后的朱利安日
如何从JSR-310类(如Java 在JSR-310中计算修改后的朱利安日,java,datetime,java-8,java-time,Java,Datetime,Java 8,Java Time,如何从JSR-310类(如LocalDate)计算修改后的朱利安日?(在JDK 8中) 具体来说,这是被称为“修改的朱利安日”的计算,而不是中的日期 例如: LocalDate date = LocalDate.now(); long modifiedJulianDay = ??? 简短答复: LocalDate date = LocalDate.now(); long modifiedJulianDay = date.getLong(JulianFields.MODIFIED_JULIAN_
LocalDate
)计算修改后的朱利安日?(在JDK 8中)
具体来说,这是被称为“修改的朱利安日”的计算,而不是中的日期
例如:
LocalDate date = LocalDate.now();
long modifiedJulianDay = ???
简短答复:
LocalDate date = LocalDate.now();
long modifiedJulianDay = date.getLong(JulianFields.MODIFIED_JULIAN_DAY);
说明:
这篇文章最好地描述了朱利安日的概念。简单地说,它是一个简单的、连续的、从某个时代算起的天数,在这个时代中,所选的时代为变化命名。因此,修改后的朱利安日从1858年11月17日开始计算
JSR-310日期和时间对象实现了定义方法get(TemporalField)
和getLong(TemporalField)
的接口。这些允许查询日期/时间对象的特定时间字段。提供了四种现场实施方式,提供朱利安日变体:
- -标准修改版朱利安日
- -标准朱利安日概念的午夜变化
- -基于公历纪元的儒略日变化
- -基于标准Java/UNIX 1970-01-01的儒略日变化
getLong(TemporalField)
一起使用,因为它们返回的数字对于int
来说太大。如果调用now.get(JulianFields.MODIFIED\u JULIAN\u DAY)
则会引发异常:“UnsupportedTemporalTypeException:无效字段ModifiedJulianDay for get()方法,请改用getLong()
请注意,JSR-310只能提供来自的整数,因此无法表示一天中的时间,并且这些数字都基于午夜。计算也使用当地午夜,而不是UTC,这应予以考虑
这些字段还可用于使用以下方法更新日期/时间对象:
你知道如何把它转换成另一种方式吗?从修改的Julian日期到LocalDate?LocalDate日期=LocalDate.MIN.with(JulianFields.Modified_Julian_DAY,56685);
result = input.with(JulianFields.MODIFIED_JULIAN_DAY, 56685);