У меня проблемы с пониманием преобразования времени в python.
У меня есть два идентичных time_struct
объекта
In [22]: local_dt
Out[22]: datetime.datetime(2000, 1, 1, 0, 0, tzinfo=<DstTzInfo 'America/Los_Angeles' PST-1 day, 16:00:00 STD>)
In [23]: local_dt.timetuple()
Out[24]: time.struct_time(tm_year=2000, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=1, tm_isdst=0)
Когда я передаю его на функцию time.mktime
на одной машине
time.mktime(local_dt.timetuple())
возвращает 946681200.0
На второй машине я получаю другой ответ
In [31]: local_dt.timetuple()
Out[31]: time.struct_time(tm_year=2000, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=1, tm_isdst=0)
In [32]: time.mktime(local_dt.timetuple())
Out[32]: 946684800.0
Машины имеют разные часовые пояса:
In [44]: time.tzname
Out[44]: ('Europe', 'Europe')
In [45]: time.tzname
Out[45]: ('CET', 'CEST')
Документация по модулю времени гласит:
Используйте следующие функции для преобразования между представлениями времени:
struct_time в секундах местного времени с начала эпохи mktime ()
Как я понимаю, мое местное время - "America / Los_Angeles", поэтому секунды, начиная с эпохи, должны быть одинаковыми и не зависеть от конфигурации системы.
Что я неправильно понимаю? Как мне тогда правильно рассчитать метку времени?