Seite 1 von 1

Frage zum time-modul

Verfasst: Dienstag 20. Mai 2003, 08:58
von Milan
Hi, ich hab ein Problem, aber ich weiß nicht ob es an Python oder betsimmten Einstellungen liegt. Folgendes: ich versuche die aktuelle Zeit für verschiedene Zeitzonen zu berechnen. Dazu benutzte ich gmtime um eine Bezugszeit zu haben und wandle diese in sekunden um. Nun will ich die Zeitzone "draufschlagen" und das ganze per gmtime und strftime in einen String umsetzten.
Soweit, so gut. Ich hab mich an die Konsole gesetzt und folgendes gemacht:

Code: Alles auswählen

>>> import time
>>> zeit=time.mktime(time.gmtime())
>>> zeit
1053413486.0
>>> time.ctime(zeit)
'Tue May 20 08:51:26 2003'
>>> time.asctime(time.gmtime(zeit))
'Tue May 20 06:51:26 2003'
>>> zeit+=3600
>>> time.ctime(zeit)
'Tue May 20 09:51:26 2003'
>>> time.asctime(time.gmtime(zeit))
'Tue May 20 07:51:26 2003'
Es zeigt sich eine Zeitdifferenz von 2 Stunden beim zurückrechnen in ein Tupel, welches ich dann in einen String verwandle. Rechnet gmtime falsch zurück? Oder liegt es nur an gewissen Einstellungen, die ich im Timemodul hätte vornehmen sollen? Denn ctime rechnet ok, aber gmtime nicht.

selbst wenn ich nur per mktime in Sekunden umrechne und wieder zurückkonvertiere zeigt sich eine Zeitdifferenz...

Code: Alles auswählen

>>> zeit=time.gmtime()
>>> zeit
(2003, 5, 20, 7, 56, 32, 1, 140, 0)
>>> time.gmtime(time.mktime(zeit))
(2003, 5, 20, 6, 56, 32, 1, 140, 0)
Wie kann ich das Problem lösen oder umgehen?

Re: Frage zum time-modul

Verfasst: Dienstag 20. Mai 2003, 10:50
von Voges
Hallo!

Zeitzonen. Mein "Lieblings"-Thema. Ich versuche es zu begreifen soweit ich es konkret brauche und vergesse es danach auch gleich wieder ;-)
Milan hat geschrieben:Wie kann ich das Problem lösen oder umgehen?
AFAIK darfst Du mktime() nicht mit der Greenwich-Zeit füttern, sondern nur mit einer lokalen Zeit, wie sie localtime() z.B. liefert.

Jan

Verfasst: Dienstag 20. Mai 2003, 14:36
von Milan
autsch, das tut weh... weil ich das bis jetzt tausendfach so benutzt habe und das alles ändern müsste. Ich denk mal, dass das nicht so wichtig ist, wenn ich das eh nur Teilparameter für die Bildung einer SID benötige, aber wenn ich das ganze später wieder benutzten muss... :cry:

Gut, dann weiß ich aber wenigstens wie die andere Sache geht...

Code: Alles auswählen

import time
def zeit(zeitzone=0,format='%A, %d.%m.%Y, %H:%M:%S'):
	return time.strftime(format,time.localtime(time.mktime(time.localtime())+time.timezone+3600*zeitzone))