ich habe das Problem, dass Java-Programme auf einem Debian Etch die
falsche Uhrzeit haben, und zwar um eine Stunde versetzt.
System.out.println(TimeZone.getDefault().getID());
System.out.println(new Date());
liefert mir:
GMT+01:00
Wed Oct 01 11:30:36 GMT+01:00 2008
date hingegen sagt (korrekt):
Mi 1. Okt 12:30:36 CEST 2008
hwclock liefert (korrekt):
Mi 01 Okt 2008 12:30:36 CEST -0.028904 seconds
Mit tzconfig habe ich eingestellt:
Zeitzone: Europe/Berlin
Damit sollten eigentlich die üblichen Fehlerkandidaten abgehakt sein.
Dachte ich. ;-)
Hat jemand eine Idee, woran es hakt?
Gruß,
Michael
> Hallo,
>
> ich habe das Problem, dass Java-Programme auf einem Debian Etch die
> falsche Uhrzeit haben, und zwar um eine Stunde versetzt.
>
> System.out.println(TimeZone.getDefault().getID());
> System.out.println(new Date());
>
> liefert mir:
>
> GMT+01:00
> Wed Oct 01 11:30:36 GMT+01:00 2008
>
> date hingegen sagt (korrekt):
>
> Mi 1. Okt 12:30:36 CEST 2008
>
Also CEST = UTC +2 wegen Sommerzeit. UTC = GMT
Also fehlt die Sommerzeit "Anpassung".
Eventuell
TimeZone.getDSTSavings()
TimeZone.useDaylightTime()
?
<http://java.sun.com/javase/6/docs/api/java/util/TimeZone.html>
> hwclock liefert (korrekt):
>
> Mi 01 Okt 2008 12:30:36 CEST -0.028904 seconds
>
> Mit tzconfig habe ich eingestellt:
>
> Zeitzone: Europe/Berlin
>
> Damit sollten eigentlich die �blichen Fehlerkandidaten abgehakt sein.
> Dachte ich. ;-)
>
> Hat jemand eine Idee, woran es hakt?
>
> Gruďż˝,
> Michael
> Also CEST = UTC +2 wegen Sommerzeit. UTC = GMT
> Also fehlt die Sommerzeit "Anpassung".
>
> Eventuell
> TimeZone.getDSTSavings()
> TimeZone.useDaylightTime()
> ?
> <http://java.sun.com/javase/6/docs/api/java/util/TimeZone.html>
Nein, das Problem muss sicher nicht Java-seitig gelöst werden.
Es existiert erst, seit ich die Debian-Kiste neu aufgesetzt habe, vorher
lieferte Java die richtige Zeit. Ich komme nur nicht drauf, was anders
ist als beim letzten mal.
Gruß,
Michael
Achso *kopf kratz*. Stimmt die Zeiteinstellung denn auch im BIOS?
> Gruß,
> Michael
Hakt es überhaupt?
String dateString="Wed Oct 01 11:30:36 GMT+01:00 2008";
DateFormat dateFormat=new SimpleDateFormat("EEE MMM dd h:mm:ss z
yyyy",Locale.US);
Date parsed=dateFormat.parse(dateString);
System.out.println(parsed);
liefert als Ausgabe
Wed Oct 01 12:30:36 CEST 2008
dh. die Uhrzeit "11:30:36" ist mit der Angabe von "GMT+01:00" ja korrekt.
Um eine andere Ausgabe zu erhalten, bietet sich SimpleDateFormat an.
Wegen der "default" Locale-Einstellung ggf die Environment des
ausführenden Host anschauen. Laut Locale-Doku wird darüber das
"System"-Locale bestimmt. Kandidat ist dort evtl LANG.
Viele Grüße
Michael
Die Uhrzeit ist richtig. Lediglich die Zeitzone, für die die Zeit hier
ausgegeben wird (d. h. die Default-TZ), ist nicht die, die Du
viellleicht erwartest. (Siehe auch Hinweise von Sabine u. Michael.) Da
würde ich mal forschen, wo Java den Default hernimmt.
GMT+1 könnte London mit Sommerzeit oder Berlin ohne Sommerzeit sein.
In dreieinhalb Wochen weisst Du mehr. ;-)
HTH
Bye
Achim
Hallo Michael,
kann es sein, dass das Problem nur zwischen Ende September und Ende
Oktober auftritt? In Deutschland wird die Sommerzeit ja erst seit kurzem
zum gleichen Termin wie in England umgestellt. Vorher war das frᅵher,
schon im September. Hast Du ein ᅵlteres Java, das das evtl. noch nicht weiᅵ?
Gruᅵ,
Peter Hormanns
PS:
Bei mir liefern OpenJDK6 und IBM-Java5 das richtige Ergebnis.
Debian Lenny auf einem Power-PC (iBook)
> In Deutschland wird die Sommerzeit ja erst seit kurzem
> zum gleichen Termin wie in England umgestellt. Vorher war das frᅵher,
> schon im September. Hast Du ein ᅵlteres Java, das das evtl. noch nicht weiᅵ?
Auf dem besagten Rechner: java version "1.5.0_14"
Gruᅵ,
Michael
> Hallo,
Hallo Michael,
> ich habe das Problem, dass Java-Programme auf einem Debian Etch die
> falsche Uhrzeit haben, und zwar um eine Stunde versetzt.
> GMT+01:00
> Wed Oct 01 11:30:36 GMT+01:00 2008
>
> date hingegen sagt (korrekt):
>
> Mi 1. Okt 12:30:36 CEST 2008
in meiner Firma hatten wir das selbe Problem.
> Mit tzconfig habe ich eingestellt:
>
> Zeitzone: Europe/Berlin
Was mach tzconfig? Bei uns hat es erst zuverlässig funktioniert, als die
Umgebungsvariable TZ auf den Namen der Zeitzone gesetzt wurde (haben wir im
Tomcat-Startskript gemacht).
Manchmal hat auch gereicht, /etc/timezone zu konfigurieren, aber nicht
immer. Die genauen Kombinationen von Debian/Ubuntu und Java-Version weiss
ich allerdings nicht mehr.
> Gruß,
> Michael
Gruß
Rainwe
> Hakt es überhaupt?
>
> String dateString="Wed Oct 01 11:30:36 GMT+01:00 2008";
> DateFormat dateFormat=new SimpleDateFormat("EEE MMM dd h:mm:ss z
> yyyy",Locale.US);
> Date parsed=dateFormat.parse(dateString);
> System.out.println(parsed);
>
> liefert als Ausgabe
> Wed Oct 01 12:30:36 CEST 2008
>
> dh. die Uhrzeit "11:30:36" ist mit der Angabe von "GMT+01:00" ja korrekt.
Ja. Nur ist "GMT+01:00" *nicht* die von mir eingestellte Zeitzone. Denn
"GMT+01:00" berücksichtigt offenbar die Sommerzeit nicht.
Aber das Problem ist gelöst, siehe anderes Posting.
Gruß,
Michael
> ich habe das Problem, dass Java-Programme auf einem Debian Etch die
> falsche Uhrzeit haben, und zwar um eine Stunde versetzt.
>
> System.out.println(TimeZone.getDefault().getID());
> System.out.println(new Date());
>
> liefert mir:
>
> GMT+01:00
> Wed Oct 01 11:30:36 GMT+01:00 2008
>
> date hingegen sagt (korrekt):
>
> Mi 1. Okt 12:30:36 CEST 2008
Geholfen hat mir der Tipp auf
https://www.agorum.com/mantis/print_bug_page.php?bug_id=49. Ich zitiere:
-------------------------------------------------------------------------
Bei einigen Linux-Installationen (Debian, Ubuntum, Fedora(?)) wird die
eingestellte Zeitzone nicht richtig von Java ausgelesen.
Das hat z.B. zur Folge das statt der Zeitzone CEST die Zeitzone GMT+1
verwendet wird (alles eine -1 Stunde zeitversetzt, da keine Sommerzeit)
-------------------------------------------------------------------------
Es werden mehrere Mᅵglichkeiten zur Abhilfe angegeben, geholfen hat bei
mir, die Datei /etc/loacaltime durch einen symbolischen Link auf
/usr/share/zoneinfo/Europe/Berlin zu ersetzen. Die Ausgabe von
System.out.println(TimeZone.getDefault().getID());
System.out.println(new Date());
liefert nun:
Europe/Berlin
Thu Oct 02 10:21:26 CEST 2008
So soll es sein. Nun bin ich gespannt, was am 26. Oktober passiert. ;-)
Gruᅵ,
Michaelhael
> Michael Paap schrieb:
> > ich habe das Problem, dass Java-Programme auf einem Debian Etch die
> > falsche Uhrzeit haben, und zwar um eine Stunde versetzt.
> >
> > System.out.println(TimeZone.getDefault().getID());
> > System.out.println(new Date());
> >
> > liefert mir:
> >
> > GMT+01:00
> > Wed Oct 01 11:30:36 GMT+01:00 2008
>
> Die Uhrzeit ist richtig. Lediglich die Zeitzone, f�r die die Zeit hier
> ausgegeben wird (d. h. die Default-TZ), ist nicht die, die Du
> viellleicht erwartest. (Siehe auch Hinweise von Sabine u. Michael.) Da
> w�rde ich mal forschen, wo Java den Default hernimmt.
>
> GMT+1 k�nnte London mit Sommerzeit oder Berlin ohne Sommerzeit sein.
Ich denke, diese Denomination schliess nie Sommerzeit ("daylight
saving") mit ein - es gibt daf�r ja extra Zeitzonen.
Es gibt da eine Diskussion zu Zeitzonen in compl.lang.java.programmer
mit Titel "Simplified TimeZone", die einige Einsichten in die Materie
hat.
> Michael Paap schrieb:
> > ich habe das Problem, dass Java-Programme auf einem Debian Etch die
> > falsche Uhrzeit haben, und zwar um eine Stunde versetzt.
> >
> > System.out.println(TimeZone.getDefault().getID());
> > System.out.println(new Date());
> >
> > liefert mir:
> >
> > GMT+01:00
> > Wed Oct 01 11:30:36 GMT+01:00 2008
>
> Die Uhrzeit ist richtig. Lediglich die Zeitzone, f�r die die Zeit hier
> ausgegeben wird (d. h. die Default-TZ), ist nicht die, die Du
> viellleicht erwartest. (Siehe auch Hinweise von Sabine u. Michael.) Da
> w�rde ich mal forschen, wo Java den Default hernimmt.
>
Eventuell probiert der OP das kleine Programm am Ende dieser Diskussion:
<http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=1&t=019984>
Es gibt alle Locales und die damit formatierten Zeitangaben aus.
Und ein Werkzeug von IBM
<http://www-01.ibm.com/support/docview.wss?rs=3068&uid=swg24014974>