Я анализирую некоторые данные, которые имеют временное время timestampe leapsecond 2012-06-30T23:59:60.209215
. Я использовал следующий код для разбора этой строки и преобразовать в объект даты и времени:Python - Datetime не учитывает прыжок второй правильно?
nofrag, frag = t.split('.')
nofrag_dt = datetime.datetime.strptime(nofrag, "%Y-%m-%dT%H:%M:%S")
dt = nofrag_dt.replace(microsecond=int(frag))
Python документация утверждает, что это не должно быть проблемой, как %S
принимает [0, 61]
. Но, я получаю эту ошибку с выше отметки времени
nofrag_dt = datetime.datetime.strptime(nofrag, "%Y-%m-%dT%H:%M:%S")
ValueError: second must be in 0..59
Благодарности
Где документация утверждает, что? http://docs.python.org/2/library/datetime.html говорит: «В отличие от модуля времени, модуль datetime не поддерживает прыжки секунд». – geoffspear
http://docs.python.org/2/library/datetime.html#datetime.datetime.strptime указывает на http://docs.python.org/2/library/time.html#time.strptime, где http : //docs.python.org/2/library/time.html#time.strftime утверждает, что поддерживает второй прыжок – madtowneast
Ah. Проблема не в синтаксическом анализе; это делается 'time.strptime' и работает нормально; проблема заключается в том, что если секунды> 59, их нельзя преобразовать обратно в 'datetime.datetime'. – geoffspear