避免旧的日期时间类
您正在使用麻烦的旧日期时间类,现在是遗留的 . 避免他们 . 由java.time类取代 .
古代 Value 观不可靠
不要在java.time(也不是旧类)中使用日期时间值来表示几个世纪以前的古代 Value 观 . 日期时间类型在内部计算自1970年UTC第一时刻以来的秒数 . 在过去的几个世纪中计算秒数会引发诸如Julian -Gregorian日历切换等问题 . 基本上这些古老的 Value 观毫无意义 .
如果要表示历史记录中的日期,请使用 LocalDate .
LocalDate columbusAttacksAmerica = LocalDate.of( "1492-10-12" );
瞬发
虽然我不建议使用历史值来执行此操作,但您可以将该大整数解析为 Instant . Instant类表示UTC中时间轴上的一个时刻,分辨率为nanoseconds(小数部分的最多九(9)位数字) .
long secondsSinceEpoch = -46_388_678_400L;
Instant instant = Instant.ofEpochSecond ( secondsSinceEpoch );
转储到控制台 .
System.out.println ( "secondsSinceEpoch: " + secondsSinceEpoch + " | instant: " + instant );
secondsSinceEpoch:-46388678400 |瞬间:0500-01-01T00:00:00Z
关于java.time
要了解更多信息,请参阅Oracle Tutorial . 并搜索Stack Overflow以获取许多示例和解释 .
从哪里获取java.time类?
内置 .
具有捆绑实现的标准Java API的一部分 .
Java 9增加了一些小功能和修复 .
大部分java.time功能在ThreeTen-Backport中反向移植到Java 6和7 .
ThreeTenABP项目专门针对Android调整 ThreeTen-Backport (如上所述) .
ThreeTen-Extra项目使用其他类扩展了java.time . 该项目是未来可能添加到java.time的试验场 . 您可以在这里找到一些有用的类,例如Interval,YearWeek,YearQuarter和more .