Frage

Ich bin mit einem Tomcat-Anwendung, und ich brauche einige Zeit, Werte.Leider kommt die Zeit, bis eine Stunde ausgeschaltet.Ich schaute hinein und entdeckte, dass meine Standard-Zeitzone ist eingestellt auf:

sun.util.calendar.ZoneInfo[id="GMT-08:00",
                           offset=-28800000,
                           dstSavings=0,
                           useDaylight=false,
                           transitions=0,
                           lastRule=null]

Anstatt die Pacific time zone.Dies wird weiter angezeigt, wenn ich versuche zu drucken, die Standard Zeit zone ist display name, und es kommt "GMT-08:00", und das scheint zu zeigen mir, dass es nicht korrekt eingestellt ist dem US Pacific time zone.Läuft bei mir auf Ubuntu Hardy Heron, Upgrade von Gutsy Gibbon.

Gibt es eine Konfiguration Datei, die ich aktualisieren kann, zu sagen, die JRE zu verwenden Pazifik mit all den damit verbundenen Sommerzeit?Zeit auf meine Maschine zeigt an, richtig, damit es nicht zu sein scheinen eine OS-weite Fehlkonfiguration.


Ok, hier ist ein update.Ein Mitarbeiter schlug vor, ich update JAVA_OPTS in meiner /etc/profile zu gehören "-Duser.timezone=US/Pacific", was auch geklappt hat (ich sah auch CATALINA_OPTS, die ich auch aktualisiert).Tatsächlich habe ich gerade exportiert die änderung in der Variablen, anstatt die neue /etc/profile (die einen Neustart später abholen der änderungen und ich werde die golden).

Aber ich denke immer noch, es ist eine bessere Lösung...es sollte eine Konfiguration für Java-irgendwo, der sagt, was Zeitzone ist es mit, oder wie es ist, greifen die Zeitzone.Wenn jemand weiß, dass so eine Einstellung hat, wäre das genial, aber für jetzt ist dies eine anständige Problemumgehung.


Ich bin mit 1,5, und es ist definitiv ein DST problem.Wie Sie sehen können, ist die Zeitzone eingestellt ist, dass keine Zeitumstellung.Meine überzeugung ist, es ist generisch festgelegt -8-offset anstatt der spezifischen Pacific Zeitzone.Da die generischen -8 offset hat keine Sommerzeit info, es ist natürlich nicht verwenden, aber die Frage ist, wo muss ich sagen, Java zu verwenden, Pacific time zone, wenn es startet?Ich bin NICHT auf der Suche für eine programmatische Lösung, sollte es ein Konfigurations-Lösung.

War es hilfreich?

Lösung

Es ist eine "Marotte" in der Weise, die JVM sucht die zoneinfo-Datei.Finden Fehler-ID 6456628.

Die einfachste Lösung ist, um /etc/localtime einen symbolischen Link auf das richtige zoneinfo-Datei.Für Pacific Zeit, die folgenden Befehle funktionieren sollte:

# sudo cp /etc/localtime /etc/localtime.dist
# sudo ln -fs /usr/share/zoneinfo/America/Los_Angeles /etc/localtime

Ich habe keine Probleme mit dem symlink-Ansatz.

Edit:Hinzugefügt "sudo" Befehle.

Andere Tipps

Auf Ubuntu, ist es nicht genug, nur ändern Sie die Datei /etc/localtime-Datei.Es scheint zu Lesen Datei /etc/timezone, zu.Es ist besser, Folgen Sie den Anweisung um die Zeitzone einzustellen, richtig.In allem tun die folgenden:

$ sudo cp /etc/timezone /etc/timezone.dist
$ echo "Australia/Adelaide" | sudo tee /etc/timezone
Australia/Adelaide
$ sudo dpkg-reconfigure --frontend noninteractive tzdata

Current default time zone: 'Australia/Adelaide'
Local time is now:      Sat May  8 21:19:24 CST 2010.
Universal Time is now:  Sat May  8 11:49:24 UTC 2010.

Auf meinem Ubuntu, wenn /etc/localtime /etc/timezone sind inkonsistent, Java scheint zu Lesen Standardzeitzone aus /etc/timezone .

Ich hatte ein ähnliches Problem, vielleicht das gleiche.Aber mein tomcat-server läuft auf einer windows-box, so dass die symlink-Lösung wird nicht funktionieren.

Ich -Duser.timezone=Australia/Sydney in der JAVA_OPTS allerdings tomcat nicht erkennen würde, dass der DST in Kraft.Als workaround habe ich geändert Australia/Sydney (GMT+10:00) bis Pacific/Numea (GMT+11:00), so, dass wäre mal richtig anzuzeigen, aber ich würde gerne wissen, die tatsächliche Lösung oder Fehler, wenn vorhanden.

Es kann helfen, zu überprüfen die Zeitzone Regeln, die Ihr Betriebssystem verwenden.

/usr/bin/zdump -v /etc/localtime | less

Diese Datei sollte enthalten Ihre Sommerzeit-Regeln, wie diese für das Jahr 2080:

/etc/localtime  Sun Mar 31 01:00:00 2080 UTC = Sun Mar 31 02:00:00 2080 BST isdst=1 gmtoff=3600

Man kann dies vergleichen mit die Zeitzone Regeln, die Sie denken, Sie verwenden sollten.Sie können gefunden werden in /usr/share/zoneinfo/.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top