Ich mache analoge Uhr in Java Swing. Um Uhrzeigerwinkel zu berechnen, brauche ich:
System.currentTimeMillis()
Für 2) und 3) dachte ich an die Verwendung
TimeZone.getDefault().getRawOffset()
und TimeZone.getDefault().getDSTSavings()
.
Aber getDSTSavings()
gibt immer 3600000
unabhängig vom aktuellen Datum im Winter / Sommer zurück.
Es sieht so aus, als würde nur überprüft, ob diese Zone unter DST
management ist und wenn ja, gibt sie 3600000
andernfalls 0
zurück.
Ist das ein Fehler in getDSTSavings()
?
Wenn nicht, dann ist es nur möglich, die aktuelle DST
-Korrektur in Millisekunden zu erhalten, indem Sie die Kalenderinstanz wie folgt verwenden: Calendar.getInstance.get(Calendar.DST_OFFSET)
?
Die cal1-Instanz, die Sie in der ersten Zeile abrufen, befindet sich in GMT + 1 und ändert sich nicht, unabhängig davon, welche Uhrzeit / Datum Sie festgelegt haben. Wenn Sie die aktuelle Zeitzone bei jedem Tick der Uhr überprüfen müssen, müssen Sie bei jedem Tick eine neue Kalenderinstanz abrufen.
Als eine Randnotiz, wenn Sie bereit sind, eine Abhängigkeit zu Ihrem Projekt hinzuzufügen - Joda Time ist eine wunderbare Sache Datums- und Zeitbibliothek.