TimeZone.getDefault()返回系統時區,直到它被更改。如何在Java中獲取操作系統時區?
示例1:
System.out.println(TimeZone.getDefault());
結果:
Europe/Kaliningrad
這是系統時區。
示例2:
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Kolkata"));
System.out.println(TimeZone.getDefault());
結果:
Asia/Kolkata
它不是系統時區,系統時區仍然是歐洲/加里寧格勒。
那麼即使更改默認DateTimeZone後,如何獲得系統時區。
在原來職位的答案https://stackoverflow.com/questions/24806183/get-date-in-current-timezone-in-java – user7294900
@ user7294900,它返回亞洲/加爾各答,而不是歐洲/加里寧格勒 – Evgenia
你在期待什麼?當你調用'setDefault'時,它會改變整個JVM的默認時區**,這是預期的行爲**。如果你不想改變它,那麼不要調用'setDefault'(或者在改變默認值之前將時區保存在一個變量中,正如下面的答案中所建議的那樣)。 – 2017-06-14 12:21:56