正在运行的 JVM 是否检测到计算机时区的更改?
我找不到任何特定的文档来回答这个问题。
我写了一些简单的测试代码来计算OS X 10.12上的Java 1.8上实际发生了什么:
public static void main(String[] _args) throws InterruptedException {
while (true) {
int calendarTimezoneOffset = Calendar.getInstance().get(Calendar.ZONE_OFFSET);
System.out.println("calendarTimezoneOffset = " + calendarTimezoneOffset);
ZoneOffset offset = ZonedDateTime.now().getOffset();
System.out.println("offset = " + offset);
Thread.sleep(1000);
}
}
旧方式(日历)和新方式(Java 8的日期和时间库)都检测不到我在JVM运行时对操作系统时区所做的任何更改。我需要停止并启动代码以获取更改的时区。
这是设计使然吗?这种行为在 JVM 实现和操作系统中是否可靠?