如何更改 LocalDateTime 的默认纪元 1970-01-01T00:00:00Z
How to change the default epoch of 1970-01-01T00:00:00Z for LocalDateTime
在LocalDateTimeclass中,有一种将纪元秒和纳秒转换为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
找出您需要的偏移量并将其添加到所有纪元秒值,然后再转换为“LocalDateTime”。
偏移量可以计算一次,然后硬编码为
public static final int EPOCH_OFFSET = nnnn;
样本:
Instant GPS = Instant.parse("1980-01-06T00:00:00Z");
long GPS_EPOCH = GPS.toEpochMilli();
System.out.printf("%s %,d\n",GPS.toString(), GPS_EPOCH);
输出:
1980-01-06T00:00:00Z 315,964,800,000
在LocalDateTimeclass中,有一种将纪元秒和纳秒转换为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
找出您需要的偏移量并将其添加到所有纪元秒值,然后再转换为“LocalDateTime”。
偏移量可以计算一次,然后硬编码为
public static final int EPOCH_OFFSET = nnnn;
样本:
Instant GPS = Instant.parse("1980-01-06T00:00:00Z");
long GPS_EPOCH = GPS.toEpochMilli();
System.out.printf("%s %,d\n",GPS.toString(), GPS_EPOCH);
输出:
1980-01-06T00:00:00Z 315,964,800,000