Я бы не хотел сказать, что могу объяснить это так, но задокументировано, что не работает.С домашней страницы pytz :
Эта библиотека поддерживает только два способа построения локализованного времени.Первый - использовать метод localize()
, предоставляемый библиотекой pytz.Это используется для локализации наивного даты-времени (дата-время без информации о часовом поясе)
(Пример)
Второй способ построения локализованного времени - преобразование существующего локализованного времени.время с использованием стандартного astimezone()
метода.
(пример)
К сожалению, использование аргумента tzinfo стандартных конструкторов datetime «не работает» с pytzдля многих часовых поясов.
>>> datetime(2002, 10, 27, 12, 0, 0, tzinfo=amsterdam).strftime(fmt)
'2002-10-27 12:00:00 LMT+0020'
Это безопасно для часовых поясов без перехода на летнее время, хотя, например, UTC
Я подозреваю, что представление часовых поясов в pytz простонесовместимо с тем, что использует конструктор datetime.
Вместо того, чтобы преследовать точные детали, я подозреваю, что более практично просто признать, что это не работает, и использовать предложенные альтернативы.