【发布时间】:2017-11-16 13:12:16
【问题描述】:
TimeZone.getDefault() 返回系统时区,直到它被更改。
样本 1:
System.out.println(TimeZone.getDefault());
结果:
Europe/Kaliningrad
是系统时区。
示例 2:
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Kolkata"));
System.out.println(TimeZone.getDefault());
结果:
Asia/Kolkata
不是系统时区,系统时区还是欧洲/加里宁格勒。
那么,即使在更改默认 DateTimeZone 之后,我如何才能获得系统时区。
【问题讨论】:
-
@user7294900,它返回亚洲/加尔各答而不是欧洲/加里宁格勒
-
您期待什么?当您调用
setDefault时,它会更改整个 JVM 的默认时区,这是预期的行为。如果您不想更改它,请不要调用setDefault(或在更改默认值之前将时区保存在变量中,如下面的答案中已建议的那样)。 -
@Hugo,无论JVM上设置了哪个时区,我都想获取系统时区(为操作系统设置)。