我有一台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));
}
}
代码的输出结果是:
1970-01-01T04:00:00.000 +0400
2019-09-29T18:30:14.766 +0300
Java版本: "1.8.0_181"
如果我在Windows上运行相同的代码,它能正常工作。对于Instant.EPOCH,我也得到了+0300。