Frage zum time-modul

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

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?
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

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
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

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))
Antworten