strptime 61 sekunden

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
Bernhard_s
User
Beiträge: 8
Registriert: Dienstag 16. Oktober 2012, 10:39

Hallo,

schon wieder eine Frage, aber nur ne kleine zum Verständnis.

In der Doku steht bei strftime:
%S - Second of the minute (00..60)

wenn ich nun das folgende ausführe:

Code: Alles auswählen

import time
time_format = "%H:%M:%S"

print time.strptime("23:59:61", time_format)
print time.strptime("23:59:62", time_format)
erhalte ich:
time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=23, tm_min=59, tm_sec=61, tm_wday=0, tm_yday=1, tm_isdst=-1)
Traceback (most recent call last):
File "tf.py", line 5, in <module>
print time.strptime("23:59:62", time_format)
File "/usr/lib/python2.6/_strptime.py", line 454, in _strptime_time
return _strptime(data_string, format)[0]
File "/usr/lib/python2.6/_strptime.py", line 328, in _strptime
data_string[found.end():])
ValueError: unconverted data remains: 2

das heißt die 61 Sekunden werden noch geschluckt, bei 62 gehts schief.

Ich verstehe aber schon die 60 Sekunden nicht, Das wäre doch einfach 1 Minute mehr (und 0 Sekunden).
Und wozu die 61 Sekunden?


Kann mir das jemand erklären?

Danke
Bernhard
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Das lässt sich mit einem Blick in die Dokumentation rausfinden:
http://docs.python.org/library/time.html hat geschrieben:The range really is 0 to 61; this accounts for leap seconds and the (very rare) double leap seconds.
Das Leben ist wie ein Tennisball.
BlackJack

@Bernhard_s: Warum 61 noch funktioniert weiss ich so auf Anhieb nicht aber die 60 ist für Schaltsekunden. Es gibt tatsächlich Minuten mit 61 Sekunden.
Bernhard_s
User
Beiträge: 8
Registriert: Dienstag 16. Oktober 2012, 10:39

Vielen Dank.
Schon wieder was gelernt!
Antworten