小编Mir*_*cle的帖子

Instant.EPOCH的Java 8时区不正确

我有一台Linux机器,其时区设置为Asia / Qatar。当我使用格式化程序打印Instant.EPOCH时,它给我错误的区域信息,而对于Instant.now(),区域信息是正确的。下面是我的代码及其输出。谁能帮我,为什么会有这个差异?

import java.util.Date;
import java.time.format.DateTimeFormatter;
import java.time.Instant;
import java.time.ZoneId;

public class DateTest {
   public static void main(String[] args) {
      String pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS Z";
      Instant myInstant = Instant.EPOCH;
      Instant myInstantNow = Instant.now();
      DateTimeFormatter formatter =  DateTimeFormatter.ofPattern(pattern).withZone(ZoneId.systemDefault());
      System.out.println(formatter.format(myInstant));
      System.out.println(formatter.format(myInstantNow));
   }
}
Run Code Online (Sandbox Code Playgroud)

代码的输出为:

1970-01-01T04:00:00.000 +0400
2019-09-29T18:30:14.766 +0300
Run Code Online (Sandbox Code Playgroud)

Java版本:“ 1.8.0_181”

如果我在Windows中运行相同的代码,它的工作正常。我的Instant.EPOCH也得到+0300。

java timezone timezone-offset java-8

5
推荐指数
1
解决办法
97
查看次数

标签 统计

java ×1

java-8 ×1

timezone ×1

timezone-offset ×1