Gibt es eine Möglichkeit, um eine Zeitzone mit (nur) einem Länder-code (Gültiger ISO-3166-code)?
Ich versuche, eine Zeitzone für einen Benutzer.
Dafür habe ich eine country code ist eine gültige ISO-Land-Code. Diese codes sind die upper-case -, zwei-Buchstaben-codes gemäß ISO-3166. Sie finden eine vollständige Liste dieser codes an einer Vielzahl von Standorten, wie zum Beispiel:
http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html
Ich denke, die Antwort ist "Nein, weil es eine manytomany Beziehung... es kann viele Zeitzone für ein Land wie die USA ...". Das ist das problem...
Habe ich tryied etwas wie:
//CountryEnum contains ISO_3166 values (http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html)
//List all country to test timezone:
for (int i = 0; i < CountryEnum.values().length; i++) {
String isoCountryCode = CountryEnum.values()[i].name();//Get the iso country code
Locale locale = new Locale(isoCountryCode);//Build a country specific locale
Calendar calendar = Calendar.getInstance(locale);//Build a calendar with the specific locale
String timeZone = calendar.getTimeZone().getDisplayName();//Build a timeZone with the calendar
System.out.println("LOCALE : "+locale+" /COUNTRY: "+isoCountryCode+" /TIMEZONE: "+timeZone);
}
Aber es immer wieder server-Zeitzone ...
Irgendwelche Ideen ?
InformationsquelleAutor der Frage ajeanson | 2009-09-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen
Locale
ist nicht einTimeZone
und Umgekehrt. Überprüfen Sie die Javadoc für die Methode, die Sie verwenden - die erste Zeile sagtDas ist, warum Sie immer die Standard-Zeitzone - da Sie nicht angeben wenn Sie sich für einen Kalender.
Denken, was Jon gesagt, wenn Sie wissen, welche Zeitzone Sie verwenden möchten, in der situation, wo Sie daran gearbeitet haben, die sich ein Benutzer aus den USA, dann rufen Sie
Calendar.getInstance
- Methode mit einem timezone und ein Gebietsschema. Auf der anderen Seite, wenn Sie können nicht sagen, dass definitiv das, was Sie tun würde hier, dann gehen Sie zurück zum Zeichenbrett und denken Sie über Ihre Anforderungen ein wenig mehr, anstatt auf Ihre Umsetzung.Wenn Sie nicht die Antwort auf die Vorherige Frage, ich denke, die standard-Rückgriff der meisten Webseiten ist, um Benutzern zu erlauben, geben Sie Ihre bevorzugte Zeitzone ein (wenn Sie eine permanente Konto auf dem server) und Standard Sie auf die server-Zeitzone wenn Sie es nicht anders gesagt. Wenn Sie don ' T haben anhaltende Konten, und Sie sind die Bereitstellung von Informationen, um Sie mit den Zeiten (z.B. eine XML-upload), dann müssen Sie entweder angeben, in welcher Zeitzone Sie sind in der Anfrage, oder (wahrscheinlich besser) Ihr Mandat den Einsatz der UTC-für alle Zeiten.
InformationsquelleAutor der Antwort Andrzej Doyle
Können Sie ICU4J für diese... Siehe http://helpdesk.objects.com.au/java/can-i-find-all-available-timezones-for-a-country
InformationsquelleAutor der Antwort MB.
Sind Sie genau richtig. Es ist keine eine Zeitzone für die USA - oder Russland, oder diverse andere "große" Länder (in Bezug auf Ost/West).
Den USA ist sicher ein einfaches Beispiel - was Zeit-zone würden Sie nutzen wollen?
America/Los_Angeles
?America/New_York
? Etwas anderes?InformationsquelleAutor der Antwort Jon Skeet
Ich bin mir nicht bewusst etwas, das Ihnen dies (als Jon wies darauf hin, die Verwendung ist eher begrenzt), aber Sie bauen konnte eine Karte mit diese Daten. Die Liste wäre ein multi-map, also vielleicht würde Sie das von Google-Sammlungen, oder verwenden Sie Ihre eigenen ISO-code->Liste
<String>
Karte.Angesichts der Zeitzone Zeichenfolge, die Sie erstellen könnte ein TimeZone-Objekt und gehen von dort aus. Allerdings, wenn das Land mehr als eine Zeitzone, die Sie haben zu entscheiden, wie damit umzugehen ist.
InformationsquelleAutor der Antwort Yishai
Hier die Lösung, die du suchst:
Den languageTag ist der code, wie en_US oder ru_RU
InformationsquelleAutor der Antwort Sergio Kosik
Die olson-Datenbank enthält alle Zuordnungen. Link
Suche nach der zone.Registerkarte Datei.
InformationsquelleAutor der Antwort Marcel Menz
Haben Sie versucht, die TZInfo gem?
Können Sie die Zeitzonen, ein Land auf diese Weise:
InformationsquelleAutor der Antwort Zack Xu