【发布时间】:2017-02-19 07:11:14
【问题描述】:
在LocalDateTime类中,有一个将纪元秒和纳秒转换为UTC时间的方法。
看起来像:
LocalDateTime dateTime = LocalDateTime.ofEpochSecond()
但是,它使用 1970-01-01T00:00:00Z 纪元的秒数获取LocalDateTime 的实例。
有没有办法将 1970 修改为 1980 作为默认实例?
我认为我需要更改它,因为:
epoch seconds = 667662644
epoch nanoseconds = 1165598
应该出来:
13:50:44.001165598 03/03/2001
但我得到了:
13:50:44.001165598 2/27/1991
【问题讨论】:
-
简短回答:不! --- 长答案:如果您的时代与 Java 时代不同,那么由您决定应用差异,例如1/1/1970 和 1/1/1980 之间的秒数,即 315532800。
-
@Andreas 好的,这是有道理的。我将找出偏移量,然后使用 LocalTimeClass。欣赏小费。
-
请注意,纪元为 1/1/1980 的 667662644 是 2/26/2001,而不是 3/3/2001。似乎给出的值甚至不适用于带有闰年的公历。
-
@Andreas 开始使用的日期似乎是 01/06/1980,这样更有意义吗?
-
哇,这是一个奇怪的时代价值!
LocalDateTime.of(1980, 1, 6, 0, 0).toEpochSecond(ZoneOffset.UTC)显示偏移量为 315964800。将其添加到您的“纪元秒数”中,您将得到您想要的。