Возможно ли, и если да, как получить часовой пояс (например, UTC offset или экземпляр datetime.timezone
с этим смещением), который используется datetime.datetime.fromtimestamp()
для преобразования временной метки POSIX (секунды с эпохи ) к объекту datetime
?
datetime.datetime.fromtimestamp()
преобразует временную метку POSIX в наивный объект datetime
(т.е. без tzinfo
), но делает это с использованием языкового стандарта системы, чтобы настроить его на локальный часовой пояс и смещение UTC, которое действовало на этом время.
Например, используя дату 2008-12-27 полуночи UTC (40 * 356 * 86400 секунд с эпохи):
>>> datetime.datetime.fromtimestamp(40 * 356 * 86400)
datetime.datetime(2008, 12, 27, 1, 0)
Эта временная метка преобразуется в объект datetime
в 1 час ночи (что было тогда, здесь, в часовом поясе CET/CEST). Через 100 дней это результат:
>>> datetime.datetime.fromtimestamp((40 * 356 + 100) * 86400)
datetime.datetime(2009, 4, 6, 2, 0)
Это 2 часа ночи. Это связано с тем, что к тому времени DST был активным.
Я ожидал, что datetime.datetime.fromtimestamp()
установит tzinfo
, который он использует в возвращенном экземпляре datetime
, но это не так.