2017-06-14 1 views
3

Die TimeZone.getDefault() gibt die Systemzeitzone zurück, bis sie geändert wird.Wie bekomme ich Betriebssystem-Zeitzone in Java?

Probe 1:

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

Ergebnis:

Europe/Kaliningrad 

Es ist Systemzeitzone.

Probe 2:

TimeZone.setDefault(TimeZone.getTimeZone("Asia/Kolkata")); 
System.out.println(TimeZone.getDefault()); 

Ergebnis:

Asia/Kolkata 

Es ist keine Systemzeitzone, Systemzeitzone ist nach wie vor Europa/Kaliningrad.

Also wie bekomme ich Systemzeitzone auch nach Änderung der Standard DateTimeZone.

+0

die Antwort in früheren Post https://stackoverflow.com/questions/24806183/get-date-in-current-timezone-in-java – user7294900

+1

@ user7294900, es gibt Asien/Kalkutta statt Europa/Kaliningrad – Evgenia

+0

Was erwartest du? Wenn Sie 'setDefault' aufrufen, ändert sich die Standardzeitzone für die gesamte JVM, ** das ist das erwartete Verhalten **. Wenn Sie es nicht ändern möchten, rufen Sie 'setDefault' nicht auf (oder speichern Sie die Zeitzone in einer Variablen, bevor Sie den Standardwert ändern, wie bereits in den Antworten unten vorgeschlagen). –

Antwort

0

Shop der Wert TimeZone.getDefault() in einer variablen, bevor folgenden Codes

TimeZone.setDefault(TimeZone.getTimeZone("Asia/Kolkata")); 
System.out.println(TimeZone.getDefault()); 

und die Variable später verwenden.

+0

Ich hoffe, dass es eine schönere Lösung gibt. – Evgenia

+0

@Evgenia TimeZone.setDefault überschreibt die Systemzeitzone, daher scheint die Speicherung der Systemzeitzone in einer Variablen die gute Alternative zu sein. – Bishwash

1

Sie können Systemeigenschaft user.timezone überprüfen:

System.getProperty("user.timezone") 
+0

es gibt leere Zeichenfolge für mich zurück. – Evgenia

Verwandte Themen