Анализировать и комбинировать дату и время (високосные секунды) из строк - 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 если он встречает високосную секунду в косвенных (внутренних) вызовах.

Другие вопросы по тегам