2009-08-06 2 views
0

ich den folgenden Code in Python 2.5.1 mit einem UTC-Zeitstempel aus einer Zeichenfolgendarstellung eines Datums zu generieren:überraschend Zeitverschiebung für Python Anruf

time.mktime(time.strptime("2009-06-16", "%Y-%m-%d")) 

Das allgemeine Ergebnis ist: 1245103200 (16.6. 2009 0:00 UTC oder 15.6.09 22:00:00, wenn Sie in meiner Zeitzone sind).

Aber jetzt habe ich festgestellt, dass auf einigen Computern mit Windows XP diese Anweisung eine um 1 Stunde, 1 Minute und 1 Sekunde verschobene Zeit erzeugt: 1245099539 (15.6.2009 22:58:59 UTC oder 15.6.09 20 : 58: 59 in meiner Zeitzone).

DST und Zeitzone scheinen nicht die Ursache des Problems zu sein, da die Zeitverschiebung scheint zusätzlich zu DST und Zeitzone Berechnung erscheint.

Hat jemand das gleiche Verhalten erlebt oder kann beschreiben, was hier passiert?

+2

Berücksichtigen Sie die spezielle Relativitätstheorie? Zeit ist kein absolutes Maß ... – fortran

+2

Die Sommerzeit könnte in Kraft treten. – b3rx

Antwort

1

Konnten Sie die Antwort selbst:

Wenn die folgende auf dem Python-Befehl ausführen Linie Schnittstelle, bekomme ich das Ergebnis:

time.strptime ("2009-06-16", "% Y-% m-% d")
time.struct_time (tm_year = 2009, tm_mon = 6, tm_mday = 16, tm_hour = 0, tm_min = 0, tm_sec = 0, tm_wday = 1, tm_yday = 167, tm_isdst = -1)

Wenn ich den gleichen Befehl in einer ausführbaren gebaut mit py2exe laufen, es ergibt sich folgende Zeitstruktur:

Zeit .struct_time (tm_year = 2009 tm_mon = 8, tm_mday = 11, tm_hour = -1, Tm_min = -1, tm_sec = -1, tm_wday = 1, tm_yday = 224, tm_isdst = -1)

The Die interne Zeitstruktur wird anscheinend auf der Kommandozeile und bei der Verwendung von py2exe anders initialisiert. Das Problem wurde behoben, indem dem Befehl eine Mitternachtszeit hinzugefügt wurde.

0

Welche Version von Python verwenden Sie? Es gibt zwei Fehlerbeschreibungen hier die viel klingen wie das, was Sie erleben:

+0

Ich glaube nicht, dass es ein Problem von DST ist, weil a) die Zeitverschiebung ist nicht 1 h, aber 1h + 1m + 1s b) scheint die Zeitverschiebung zusätzlich zu DST und Zeitzone Berechnung erscheinen (siehe über) – Bertolt