如何更改 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