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

The TimeZone.getDefault() returns the System Time zone until it's changed.

Sample 1:

System.out.println(TimeZone.getDefault());

Result:

Europe/Kaliningrad

It is system time zone.

Sample 2:

TimeZone.setDefault(TimeZone.getTimeZone("Asia/Kolkata"));

System.out.println(TimeZone.getDefault());

Result:

Asia/Kolkata

It isn't system time zone, system time zone is still Europe/Kaliningrad.

So how can I get system time zone even after change default DateTimeZone.

解决方案

You can check system property user.timezone:

System.getProperty("user.timezone")