Bekommen TimeZone offset Wert von Zeitzone ohne Zeitzone name
Muss ich speichern, um das Telefon-Zeitzone im format [+/-]hh:mm
Ich bin mit TimeZone-Klasse, um damit umzugehen, aber das einzige format, das ich bekommen kann, ist die folgende:
PST -05:00
GMT +02:00
Ich würde lieber nicht mit substring das Ergebnis, gibt es eine Taste oder option-flag kann ich nur den Wert und nicht den Namen, die Zeitzone (GMT/CET/PST...)?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, tun Sie nicht. Offset auf seine eigene ist nicht genug, müssen Sie die ganze Zeit-zone, name/id. Zum Beispiel Lebe ich in Oslo, wo meine aktuellen offset +02:00, aber im winter (aufgrund der Sommerzeit) ist +01:00. Der genaue Wechsel zwischen standard-und Sommer-Zeit ist abhängig von Faktoren, die Sie nicht wollen, zu erkunden.
Also statt der Speicherung
+ 02:00
(oder sollte es sein+ 01:00
?) Ich Speichere"Europe/Oslo"
in meiner Datenbank. Jetzt kann ich wieder die volle Konfiguration mit:Wollen wissen, was ist mein Zeitzonen-offset, heute?
Jedoch das gleiche im Dezember:
Genug, um zu sagen: lagern Sie Zeit-zone, name oder-id, und jedes mal, wenn Sie möchten, eine Datumsanzeige, überprüfen Sie, was ist der aktuelle offset (heute) eher als das speichern von festen Wert. Sie können
Zeitzone.getAvailableIDs()
zum auflisten aller unterstützten timezone-IDs.TimeZone
Klasse, einfach anrufengetOffset()
mit dem aktuellen Datum und konvertieren von Millisekunden bis Minuten. Dann formathh:mm
.@MrBean - ich war in einer ähnlichen situation, wo ich anrufen musste ein 3rd-party-web-service und übergeben Sie das Android-Gerät die aktuelle Zeitzone offset im format +/-hh:mm. Hier ist meine Lösung:
Mit java8 nun können Sie
um die aktuelle system-Zeit-offset von UTC. Dann können Sie es konvertieren in ein beliebiges format Sie möchten. Fand es nützlich für meinen Fall.
Beispiel : https://docs.oracle.com/javase/tutorial/datetime/iso/timezones.html
geben Ihnen einen standardisierten string-Darstellung wie "+0300"
Ich weiß, das ist alt, aber ich dachte, ich würde meine Eingabe. Ich hatte dies für ein Projekt bei der Arbeit und das war meine Lösung.
Habe ich ein Gebäude-Objekt, das enthält die Zeitzone mit der TimeZone-Klasse und wollte amp; zoneid und offset-Felder in eine neue Klasse.
Also, was ich Tat, war:
Dann im Konstruktor ich ging in das Gebäude-Objekt und stellen Sie diese Felder wie folgt:
So timeZoneId könnte gleich etwas wie "EST"
Und timeZoneOffset könnte gleich etwas wie "-05:00"
Ich möchte nicht, dass Sie vielleicht nicht
Können wir leicht in Millisekunden von einem
TimeZone
mit nur einemTimeZone
Instanz undSystem.currentTimeMillis()
. Dann können wir konvertieren von Millisekunden zu jeder Zeit Gerät der Wahl mit derTimeUnit
Klasse.Etwa so:
Oder wenn Sie lieber die neue Java 8 Zeit-API