Ich möchte beim Klicken auf eine Schaltfläche die Zeitzone vom Android-Handy abrufen.
Haben Sie versucht, TimeZone.getDefault()
zu verwenden:
Die meisten Anwendungen verwenden TimeZone.getDefault (), wodurch eine TimeZone-basierte .__ zurückgegeben wird. in der Zeitzone, in der das Programm läuft.
Ref: http://developer.Android.com/reference/Java/util/TimeZone.html
TimeZone tz = TimeZone.getDefault();
System.out.println("TimeZone "+tz.getDisplayName(false, TimeZone.SHORT)+" Timezon id :: " +tz.getID());
Ausgabe:
TimeZone GMT + 09: 30 Timezon id :: Australia/Darwin
Bearbeiten: den Fall korrigiert
Versuchen Sie diesen Code-
Calendar cal = Calendar.getInstance();
TimeZone tz = cal.getTimeZone();
Die vom Benutzer ausgewählte Zeitzone wird zurückgegeben.
Ich brauchte denoffset, der nicht nur die Tageslicht-Einsparungzeit enthielt, sondern auch als -Zahl . 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 in Teheran, Iran im Winter und "4,5" (4:30') für den Sommer erwarten würde.
Ich brauchte es auch als Zeichenfolge, damit ich es auf einem Server posten konnte, sodass Sie möglicherweise nicht die letzte Zeile benötigen.
um eine korrekte Zeitzone zu erhalten:
TimeZone tz = TimeZone.getDefault();
Date now = new Date();
//Import part : x.0 for double number
double offsetFromUtc = tz.getOffset(now.getTime()) / 3600000.0;
String m2tTimeZoneIs = Double.parseDouble(offsetFromUtc);
Einfachste Lösung mit einfachem Datumsformat: SimpleDateFormat ("ZZZZZ"):
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"),
Locale.getDefault());
Date currentLocalTime = calendar.getTime();
DateFormat date = new SimpleDateFormat("ZZZZZ",Locale.getDefault());
String localTime = date.format(currentLocalTime);
System.out.println(localTime+ " TimeZone " );
==> Die Ausgabe ist: +05: 30
Gemäß http://developer.Android.com/reference/Android/text/format/Time.html sollten Sie Time.getCurrentTimezone () verwenden, um die aktuelle Zeitzone des Geräts abzurufen.
TimeZone timeZone = TimeZone.getDefault (); timeZone.getID ();
Es wird wie gedruckt
Asia/Kolkata
Für Geräte mit API 26 und höher können Sie es folgendermaßen erhalten:
ZonedDateTime.now().getZone().toString();