如何在 Java 中获取操作系统时区?

Evg*_*nia 5 java timezone

TimeZone.getDefault() 返回系统时区,直到它被更改。

示例 1:

System.out.println(TimeZone.getDefault());
Run Code Online (Sandbox Code Playgroud)

结果:

Europe/Kaliningrad
Run Code Online (Sandbox Code Playgroud)

是系统时区。

示例 2:

TimeZone.setDefault(TimeZone.getTimeZone("Asia/Kolkata"));
System.out.println(TimeZone.getDefault());
Run Code Online (Sandbox Code Playgroud)

结果:

Asia/Kolkata
Run Code Online (Sandbox Code Playgroud)

它不是系统时区,系统时区仍然是欧洲/加里宁格勒。

那么即使在更改默认 DateTimeZone 后,我怎样才能获得系统时区。

Bis*_*ash 0

在执行以下代码之前将 TimeZone.getDefault() 的值存储在变量中

TimeZone.setDefault(TimeZone.getTimeZone("Asia/Kolkata"));
System.out.println(TimeZone.getDefault());
Run Code Online (Sandbox Code Playgroud)

并稍后使用该变量。