Die Umwandlung der "America/Los Angeles" Zeitzone "PST" oder "PDT" in Java ME
Mein server schickt mir Zeitzonen, die im format "America/Los Angeles". Auf dem client habe ich eine Zeit, die ich brauche, um die Anzeige in die Zeitzone. Die Antwort wird sein, "PST" oder "PDT", abhängig von der Sommerzeit auf die Zeit gegeben. Wie mache ich, dass die Umstellung?
Bin ich auf Java ME, Blackberry 4.7, um genau zu sein), so kann ich nicht verwenden, Joda Time.
Werde ich brauchen, um diese Berechnung schnell für eine Menge Termine (aber nur eine Zeitzone hat), ich kann also nicht einfach den server senden Sie mir eine ausgeglichen werden, da der offset könnte sich ändern, je nach Datum.
Edit: Lassen Sie mich formulieren Sie das problem, denn es scheint einige Verwirrung. Ich bin da ein zoneinfo Namen und ein Datum. Ich will wissen, den offset von GMT in dieser Zeitzone zu diesem Zeitpunkt. Die Antwort variiert je nach Sommerzeit.
Als zusätzlichen bonus, ich würde gerne den TLA zu zeigen, der Benutzer (d.h., "PST" oder "PDT"), aber das ist Sekundär.
Lösung: ich fasse hier die Lösung, denn es ist nicht sonderlich klar aus den Antworten unten. Dies tut im wesentlichen das, was ich brauche, in J2ME:
TimeZone zone = TimeZone.getTimeZone("America/Los_Angeles");
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(zone);
calendar.setTime(new Date(2011, 1, 1, 12, 0, 0));
System.out.println(zone.getOffset(1, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), calendar.get(Calendar.DAY_OF_WEEK), calendar.get(Calendar.MILLISECOND)));
calendar.setTime(new Date(2011, 6, 1, 12, 0, 0));
System.out.println(zone.getOffset(1, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), calendar.get(Calendar.DAY_OF_WEEK), calendar.get(Calendar.MILLISECOND)));
InformationsquelleAutor Dirk Groeneveld | 2011-02-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann sein, dass das ist, was Sie wollen. Das funktioniert auf meinem Rechner mit standard-java.
Update: OP sagte, der oben funktioniert nicht für j2ME. Nach googeln fand ich hier, dass getOffset() ist eigentlich getRawOffset() in j2me. Jedoch, es nicht so Aussehen, wie es supposrts "displayName". Die einzige Möglichkeit, die ich denke, ist zu gehen durch die ids mit getAvailableIds().
Ich habe den offset für Sie als gut.
Unterstützt es die getOffset()?
Mein vorheriger Kommentar war dumm, so dass ich es gelöscht. getRawOffset() kann nicht funktionieren, weil es nicht ein Datum. J2ME hat nur die lange form getOffset(), die habe ich zu arbeiten mit dem code, den ich oben Hinzugefügt.
InformationsquelleAutor CoolBeans
Tut J2ME nicht unterstützt
Zeitzone.getTimeZone(id)
? Das ist im Grunde, was Sie wollen, um die Zeitzone offsets etc. Ich hoffe, dass J2ME unterstützt zoneinfo zone Namen.BlackBerry TimeZone Umsetzung unterstützt zoneinfo Namen. Den problem OP hat, denke ich, ist, dass er empfangen Zeitzone Abkürzungen, nicht zoneinfo Namen. BlackBerry standardmäßig auf GMT, wenn es nicht erkennen kann, die Abkürzung. Leider, BB-Modelle, die wissen oft nicht, viele Abkürzungen. Sie können
TimeZone.getAvailableIDs()
um zu sehen, was unterstützt wird, auf einer bestimmten Plattform.die Frage sagt, die OP ist immer die zoneinfo Namen. Ich bin noch etwas verwirrt...
Wie haben Sie festgestellt, dass "America/Los Angeles" ist genau gleich zu PST? Das würde mich überraschen.
Du hast Recht, Sie sind unterschiedlich. Ich war falsch. Danke für den Hinweis!
InformationsquelleAutor Jon Skeet