TimeZone tz = TimeZone.getDefault (); String gmt1 = TimeZone.getTimeZone (tz.getID ()). GetDisplayName (false, TimeZone.SHORT); String gmt2 = TimeZone.getTimeZone (tz.getID ()). GetDisplayName (false, TimeZone.LONG); Log.d ("Tag", "TimeZone:" + gmt1 + "\ t" + gmt2); Und das ist der Code
Asha v
10
Ich würde Asha v nicht so grob gegenüberstehen. Ich suchte nur das Gleiche und die Antworten, die ich fand, waren anders als diese. Die Suche nach der genauen "TimeZone.getDefault" führte mich hierher.
Yar
Antworten:
189
Haben Sie versucht zu verwenden TimeZone.getDefault():
Die meisten Anwendungen verwenden TimeZone.getDefault (), das eine Zeitzone basierend auf der Zeitzone zurückgibt, in der das Programm ausgeführt wird.
Wenn Sie JodaTime verwenden , können Sie eine DateTimeZone mit den folgenden Eigenschaften erhalten:DateTimeZone.forTimeZone(TimeZone.getDefault());
Joshua Pinter
@JoshPinter Welches Paket verwende ich, das auf android.icu.utils oder das java.util?
Neon Warge
1
Ich habe die Zeitzone vom Gerät auf CST geändert. Es gibt mir kein CST zurück. Gibt es eine Möglichkeit, die Zeitzone des Geräts abzurufen?
Abhinav Saxena
Ich frage mich, ob TimeZone.getDefault betroffen ist, wenn wir die Zeitzone des Geräts irgendwie vortäuschen. Es scheint nicht auf dem Android-Simulator zu sein.
Hau Luu
136
TimeZone tz =TimeZone.getDefault();System.out.println("TimeZone "+tz.getDisplayName(false,TimeZone.SHORT)+" Timezon id :: "+tz.getID());
Ausgabe:
TimeZone GMT + 09: 30 Timezon id :: Australien / Darwin
Ich brauchte den Offset , der nicht nur die Sommerzeit, sondern auch eine Ziffer enthielt . Hier ist der Code, den ich verwendet habe, falls jemand nach einem Beispiel sucht.
Ich bekomme eine Antwort von "3,5" (3:30 ') , was ich im Winter in Teheran, Iran, und "4,5" (4:30') für den Sommer erwarten würde .
Ich brauchte es auch als Zeichenfolge, damit ich es auf einem Server veröffentlichen konnte, sodass Sie möglicherweise nicht die letzte Zeile benötigen.
um die richtige Zeitzone zu erhalten:
TimeZone tz =TimeZone.getDefault();Date now =newDate();//Import part : x.0 for double numberdouble offsetFromUtc = tz.getOffset(now.getTime())/3600000.0;String m2tTimeZoneIs =Double.parseDouble(offsetFromUtc);
Ein CalendarObjekt dafür zu erstellen ist ein Unsinn. Die Erstellung dieser Art von Objekt ist teuer. TimeZone.getDefault()ist der geeignete Weg, um dies zu bekommen.
anonym
3
@KrLx_roller Bitte überprüfen Sie dies sorgfältig, bevor Sie die Antwort ablehnen. Ich habe geschrieben, dass meine Antwort die vom Benutzer ausgewählte Zeitzone zurückgibt, während TimeZone.getDefault () die Standardzeitzone für die Installation zurückgibt. Für weitere Informationen wenden Sie sich bitte an code.google.com/p/android/issues/detail?id=2037 .
Anujprashar
Ihr Code gibt dieselbe Zeitzone zurück wie TimeZone.getDefault () unter Android 4.2. TimeZone.getDefault () gibt die in den Einstellungen -> Datum und Uhrzeit ausgewählte Zeitzone zurück.
Die TimeZoneKlasse, die in den meisten anderen Antworten verwendet wurde, war die, die wir hatten, als die Frage 2011 gestellt wurde, obwohl sie schlecht gestaltet war. Heute ist es längst veraltet, und ich empfehle, stattdessen java.time zu verwenden, die moderne Java-API für Datum und Uhrzeit, die 2014 veröffentlicht wurde.
Frage: Benötigt java.time nicht Android API Level 26?
java.time funktioniert sowohl auf älteren als auch auf neueren Android-Geräten. Es erfordert nur mindestens Java 6 .
In Java 8 und höher und auf neueren Android-Geräten (ab API-Level 26) ist die moderne API integriert.
In Nicht-Android Java 6 und 7 erhalten Sie den ThreeTen Backport, den Backport der modernen Klassen (ThreeTen für JSR 310; siehe die Links unten).
Verwenden Sie auf (älteren) Android die Android-Edition von ThreeTen Backport. Es heißt ThreeTenABP. Und stellen Sie sicher, dass Sie die Datums- und org.threeten.bpZeitklassen mit Unterpaketen importieren.
Alle Antworten hier scheinen darauf hinzudeuten, den Daylite-Parameter auf false zu setzen . Dies ist für viele Zeitzonen falsch, in denen die abgekürzten Namen je nach Jahreszeit geändert werden (z. B. EST vs EDT).
Die folgende Lösung gibt Ihnen die richtige Abkürzung entsprechend dem aktuellen Datum für die Zeitzone.
val tz =TimeZone.getDefault()
val isDaylite = tz.inDaylightTime(Date())
val timezone = tz.getDisplayName(isDaylite,TimeZone.SHORT)
Antworten:
Haben Sie versucht zu verwenden
TimeZone.getDefault()
:Ref: http://developer.android.com/reference/java/util/TimeZone.html
quelle
DateTimeZone.forTimeZone(TimeZone.getDefault());
Ausgabe:
quelle
Bearbeiten: Der Fall wurde korrigiert
TimeZone.getDefault()
quelle
Ich brauchte den Offset , der nicht nur die Sommerzeit, sondern auch eine Ziffer enthielt . Hier ist der Code, den ich verwendet habe, falls jemand nach einem Beispiel sucht.
Ich bekomme eine Antwort von "3,5" (3:30 ') , was ich im Winter in Teheran, Iran, und "4,5" (4:30') für den Sommer erwarten würde .
Ich brauchte es auch als Zeichenfolge, damit ich es auf einem Server veröffentlichen konnte, sodass Sie möglicherweise nicht die letzte Zeile benötigen.
um die richtige Zeitzone zu erhalten:
quelle
Versuchen Sie diesen Code-
Die vom Benutzer ausgewählte Zeitzone wird zurückgegeben.
quelle
Calendar
Objekt dafür zu erstellen ist ein Unsinn. Die Erstellung dieser Art von Objekt ist teuer.TimeZone.getDefault()
ist der geeignete Weg, um dies zu bekommen.Es wird wie gedruckt
quelle
Einfachste Lösung mit einfachem Datumsformat: SimpleDateFormat ("ZZZZZ"):
==> Ausgabe ist: +05: 30
quelle
Laut http://developer.android.com/reference/android/text/format/Time.html sollten Sie Time.getCurrentTimezone () verwenden, um die aktuelle Zeitzone des Geräts abzurufen.
quelle
ZoneId von java.time und ThreeTenABP
Moderne Antwort:
Als ich dieses Snippet in der Zeitzone Australien / Sydney ausgeführt habe, war die Ausgabe genau das:
Wenn Sie möchten, dass die Sommerzeit (DST) den Namen oder die Abkürzung der Zeitzone berücksichtigt:
Die
TimeZone
Klasse, die in den meisten anderen Antworten verwendet wurde, war die, die wir hatten, als die Frage 2011 gestellt wurde, obwohl sie schlecht gestaltet war. Heute ist es längst veraltet, und ich empfehle, stattdessen java.time zu verwenden, die moderne Java-API für Datum und Uhrzeit, die 2014 veröffentlicht wurde.Frage: Benötigt java.time nicht Android API Level 26?
java.time funktioniert sowohl auf älteren als auch auf neueren Android-Geräten. Es erfordert nur mindestens Java 6 .
org.threeten.bp
Zeitklassen mit Unterpaketen importieren.Links
java.time
zuerst beschrieben wurde.java.time
Java 6 und 7 (ThreeTen für JSR-310).quelle
Für Geräte mit API 26 und höher können Sie dies folgendermaßen erhalten:
quelle
Auf meinem Gerät
TimeZone.getDefault()
wird immer die UTC-Zeitzone zurückgegeben.Ich muss dies tun, um die vom Benutzer konfigurierte Zeitzone zu erhalten:
Die vom Benutzer ausgewählte Zeitzone wird zurückgegeben.
quelle
Alle Antworten hier scheinen darauf hinzudeuten, den Daylite-Parameter auf false zu setzen . Dies ist für viele Zeitzonen falsch, in denen die abgekürzten Namen je nach Jahreszeit geändert werden (z. B. EST vs EDT).
Die folgende Lösung gibt Ihnen die richtige Abkürzung entsprechend dem aktuellen Datum für die Zeitzone.
quelle
TimeZone
Klasse ist schlecht gestaltet und längst veraltet.