Анализировать и комбинировать дату и время (високосные секунды) из строк - python
Я анализирую дату (формат: ГГГГ-ММ-ДД ЧЧ: ММ: СС) из файла данных, который содержит несколько строк дат.
Проблема в том, что данные содержат високосные секунды, поэтому я не могу использовать дату и время. Как я могу принять во внимание високосные секунды (0-60), чтобы в конце у меня был тот же результат, если бы я использовал datetime.strptime из строки с форматом выше (таким образом, дата + время), пожалуйста?
Я уже пробовал с комбайном, используя дату для даты и времени для строки времени. Это правильный путь или есть другие?
Заранее спасибо.
1 ответ
Просто используйтеtime.strptime()
:
#!/usr/bin/env python
import datetime as DT
import time
from calendar import timegm
utc_time_string = '2012-06-30 23:59:60'
utc_time_tuple = time.strptime(utc_time_string, "%Y-%m-%d %H:%M:%S")[:6]
utc_dt = DT.datetime(1970, 1, 1) + DT.timedelta(seconds=timegm(utc_time_tuple))
# -> datetime.datetime(2012, 7, 1, 0, 0)
Если время ввода не в UTC, то вы можете обработать дополнительную секунду в time_tuple
например, вручную datetime
модуль может поднять ValueError
если вы пропустите прыжок через секунду или он может молча обрезать 60
в 59
если он встречает високосную секунду в косвенных (внутренних) вызовах.