Я пытаюсь написать пару функций dt
и ut
, которые преобразуют назад и вперед между нормальным временем unix (секунды с 1970-01-01 00:00:00 UTC) и дата и время Python объект.
Если dt
и ut
были правильными обратными, тогда этот код дважды печатает одну и ту же метку времени:
import time, datetime
# Convert a unix time u to a datetime object d, and vice versa
def dt(u): return datetime.datetime.fromtimestamp(u)
def ut(d): return time.mktime(d.timetuple())
u = 1004260000
print u, "-->", ut(dt(u))
Увы, вторая временная метка составляет 3600 секунд (час) меньше, чем первая.
Я думаю, что это происходит только в самых разных ситуациях, возможно, в тот час, когда переход на летнее время проскакивает.
Но есть ли способ написать dt
и ut
, чтобы они были истинными инверсиями друг друга?
Связанный вопрос: Создание matplotlib's date2num и num2date совершенные обратные