Я пытаюсь применить tzinfo к объекту datetime.Python datetime и tzinfo объекты (изменение минут вместо часов)
In [1]: from datetime import datetime
In [2]: import pytz
In [3]: london = pytz.timezone("Europe/London")
In [4]: london
Out[5]: <DstTzInfo 'Europe/London' LMT-1 day, 23:59:00 STD>
In [6]: localized_date_object = datetime(2016, 1, 1, 11, 30, 0, 5000, london)
In [7]: localized_date_object
Out[8]: datetime.datetime(2016, 1, 1, 11, 30, 0, 5000, tzinfo=<DstTzInfo 'Europe/London' LMT-1 day, 23:59:00 STD>)
In [9]: utc_date_object = localized_date_object.astimezone(pytz.utc)
In [10]: utc_date_object
Out[11]: datetime.datetime(2016, 1, 1, 11, 31, 0, 5000, tzinfo=<UTC>)
In [16]: paris = pytz.timezone("Europe/Paris")
In [17]: localized_date_object = datetime(2016, 1, 1, 11, 30, 0, 5000, paris)
In [18]: utc_date_object = localized_date_object.astimezone(pytz.utc)
In [19]: utc_date_object
Out[19]: datetime.datetime(2016, 1, 1, 11, 21, 0, 5000, tzinfo=<UTC>)
Как вы можете видеть, он применяет дельта к минутам вместо часов.
Может кто-нибудь объяснить мне, что я делаю неправильно здесь.
Спасибо, Джири. Так что для Лондона это будет UTC зимой и BST летом. – Sebabouche
И CEST для Франции летом;) – Sebabouche
@Sebabouche Это не вопрос определения правильного часового пояса для ваших городов ;-) Когда вы храните время где-то, там также должна храниться связанная информация о часовом поясе (CET или CEST). Лучшая практика ИМО - хранить все в UTC и конвертировать для просмотра в «пользовательский» часовой пояс. Преобразование BTW из UTC в Европу/Париж работает безупречно, см. Обновление ответа. – Jiri