tl;dr
LocalDate.MIN.with (
java.time.temporal.JulianFields.MODIFIED_JULIAN_DAY ,
2_456_606L
)
2013-11-09
其他方向,从现代到儒略日。
LocalDate.of( 2013 , 11 , 9 )
.getLong ( java.time.temporal.JulianFields.JULIAN_DAY )
2456606
Details
首先,您的评论:
下面提到的转换器链接中 11 月 18 日的朱利安日期为 2456606 aa.usno.navy.mil/data/docs/JulianDate.php
…是不正确的。该网站返回 2013 年 11 月 9 日的 2456606。
Your 海军网站 http://aa.usno.navy.mil/data/docs/JulianDate.php定义朱利安·达特自公元前 4713 年 1 月 1 日以来的天数,映射到“通用时间”。我想他们的意思是UTC https://en.wikipedia.org/wiki/Coordinated_Universal_Time以及现代 ISO 8601 日历系统。看维基百科 https://en.wikipedia.org/wiki/Julian_day.
Java 中内置的 java.time 类使这一切变得简单。
long input = 2_456_606L;
LocalDate ld = LocalDate.MIN.with ( java.time.temporal.JulianFields.JULIAN_DAY , input );
转储到控制台。
System.out.println ( "input: " + input + " is: " + ld );
输入:2456606 是:2013-11-09
更多讨论请参见我的答案 https://stackoverflow.com/a/38278281/642706关于重复的问题。
反之亦然,将现代日期转换为儒略日。
long output = ld.getLong ( java.time.temporal.JulianFields.JULIAN_DAY );
关于 java.time
The java.time http://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html框架内置于 Java 8 及更高版本中。这些课程取代了麻烦的旧课程legacy https://en.wikipedia.org/wiki/Legacy_system日期时间类,例如java.util.Date https://docs.oracle.com/javase/8/docs/api/java/util/Date.html, Calendar https://docs.oracle.com/javase/8/docs/api/java/util/Calendar.html, & SimpleDateFormat http://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html.
The 乔达时间 http://www.joda.org/joda-time/项目,现在在维护模式 https://en.wikipedia.org/wiki/Maintenance_mode,建议迁移到java.time http://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html类。
要了解更多信息,请参阅甲骨文教程 http://docs.oracle.com/javase/tutorial/datetime/TOC.html。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310 https://jcp.org/en/jsr/detail?id=310.
从哪里获取 java.time 类?
-
Java SE 8 https://en.wikipedia.org/wiki/Java_version_history#Java_SE_8 and SE 9 https://en.wikipedia.org/wiki/Java_version_history#Java_SE_9 and later
- 内置。
- 具有捆绑实现的标准 Java API 的一部分。
- Java 9 添加了一些小功能和修复。
-
Java SE 6 https://en.wikipedia.org/wiki/Java_version_history#Java_SE_6 and SE 7 https://en.wikipedia.org/wiki/Java_version_history#Java_SE_7
- 许多 java.time 功能都向后移植到 Java 6 和 7三十后端口 http://www.threeten.org/threetenbp/.
-
Android https://en.wikipedia.org/wiki/Android_(operating_system)
- The 三十ABP https://github.com/JakeWharton/ThreeTenABP项目适应三十后端口(如上所述)专门针对 Android。
- See 如何使用 ThreeTenABP... https://stackoverflow.com/q/38922754/642706.
The 三十额外 http://www.threeten.org/threeten-extra/项目通过附加类扩展了 java.time。该项目是 java.time 未来可能添加的内容的试验场。您可能会在这里找到一些有用的类,例如Interval http://www.threeten.org/threeten-extra/apidocs/org/threeten/extra/Interval.html, YearWeek http://www.threeten.org/threeten-extra/apidocs/org/threeten/extra/YearWeek.html, YearQuarter http://www.threeten.org/threeten-extra/apidocs/org/threeten/extra/YearQuarter.html, and more http://www.threeten.org/threeten-extra/apidocs/index.html.