Разбирать и объединять дату и время (високосные секунды) из строк — python

Я анализирую дату (формат: ГГГГ-ММ-ДД ЧЧ:ММ:СС) из файла данных, который содержит несколько строк дат.

Проблема в том, что данные содержат високосные секунды, поэтому я не могу использовать datetime. Как я могу учесть високосные секунды (0-60), чтобы в конце у меня был бы тот же результат, если бы я использовал datetime.strptime из строки с форматом выше (таким образом , дата+время), пожалуйста?

Я уже пробовал объединить, используя дату для даты и время для строки времени. Это правильный путь или есть какие-то другие?

Заранее спасибо.


person greencup    schedule 18.05.2016    source источник


Ответы (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, если он встретит дополнительную секунду в косвенном (внутренние) звонки.

person jfs    schedule 18.05.2016