Wie man die aktuelle Zeit und die Zeitzone von Locale?
Ich habe dieses seltsame problem, wenn ich einen Kalender erstellen, in eine locale, TimeZone einfach kehrt, um die lokale
public void start(Locale locale){
String s = locale.getDisplayName();
System.err.println(s);
Calendar c = new GregorianCalendar(locale);
System.err.println(c.getTimeZone());
}
- Und das ist die Ausgabe:
español (Argentina)
sun.util.calendar.ZoneInfo[id="Europe/Bucharest", //etc more useless date here....
Wie bekomme ich die richtige Zeit zu einem bestimmten Gebietsschema ?
Wahrscheinlich duplizieren: stackoverflow.com/questions/1723073/...
Gebietsschema und die Zeitzone werden nicht notwendigerweise mit 1:1. Denken Sie über die locale de_de. Es gibt verschiedene Zeitzonen, die für UNS (-> HST, AKDT, PDT, MDT, CDT, EDT).
und duplizieren auf einen anderen
es gibt also keine Möglichkeit, Sie zu extrahieren Sie die Zeitzone aus, eine locale ... das ist ziemlich dumm
es ist nicht dumm. Es macht sehr viel Sinn, eigentlich. Und ehrlich gesagt, brauchen Sie nicht zu tun - siehe meine Antwort.
Gebietsschema und die Zeitzone werden nicht notwendigerweise mit 1:1. Denken Sie über die locale de_de. Es gibt verschiedene Zeitzonen, die für UNS (-> HST, AKDT, PDT, MDT, CDT, EDT).
und duplizieren auf einen anderen
es gibt also keine Möglichkeit, Sie zu extrahieren Sie die Zeitzone aus, eine locale ... das ist ziemlich dumm
es ist nicht dumm. Es macht sehr viel Sinn, eigentlich. Und ehrlich gesagt, brauchen Sie nicht zu tun - siehe meine Antwort.
InformationsquelleAutor Alexandru Chirila | 2012-05-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die kurze Antwort: Sie kann es nicht.
Die lange Antwort: Es gibt keine solche Sache wie "die richtige Zeitzone für ein Gebietsschema". Das ist nur, weil es ein paar Länder, die über mehr als eine Zeitzone (z.B. USA). Zeitzone ist ein anderes Konzept.
Sowieso, die Sie suchen, um Ihr problem zu lösen. Ich nehme an, Sie schreiben eine web-Anwendung, und Sie sehen, dass die Zeit zone ist durch den Rückgriff auf die server-Standard. Das ist eine typische situation. Beide
Locale.getDefault()
undTimeZone.getDefault()
zurück server-bezogene Informationen. Die JVM hat keine Möglichkeit zu wissen, die "richtige" Zeitzone. Also, was können Sie dagegen tun?DateFormat
Instanz und es wird konvertieren Zeitzone automatisch.Aus diesen drei Möglichkeiten zur Wahl, ich wähle immer die Nummer 1. Indem Sie Zeit-zone Informationen zu Benutzer-Profil, die Sie sicher wissen, was seine/Ihre bevorzugte Zeit-zone, unabhängig von Ihrem aktuellen web-browser, etc. Bitte beachten Sie, dass einige Benutzer möchten möglicherweise verwenden Sie Ihre Anwendung, während andere Länder besuchen...
Das ist wahr. Öffnungszeiten der einige shop, restaurant, Bibliothek oder was auch immer, nicht aufgeführt in Ihrer lokalen Zeitzone. Aber normalerweise wäre es " free-form text, sondern als Datum formatiert, so gibt es keinen Punkt in der Umwandlung von Zeit-Zonen hier. Auch das hinzufügen Wort "(local)" macht Sinn, wenn der Ort wird Häufig von Touristen besucht...
InformationsquelleAutor Paweł Dyda