Карточка Middle Стандартная библиотека обновлено

Работа с таймзонами

Вопрос

Как правильно работать с датами и таймзонами в Python?

Попробуйте сами

Ответьте про себя или вслух, потом откройте ответ и сверьтесь.

Показать ответ и разбор

Коротко

Хранить и считать в aware UTC: datetime.now(timezone.utc). Переводить в зону пользователя только для показа через zoneinfo.ZoneInfo("Europe/Moscow").

Ответ

Хранить и считать в aware UTC: datetime.now(timezone.utc). Переводить в зону пользователя только для показа через zoneinfo.ZoneInfo("Europe/Moscow"). Не смешивать naive и aware, не использовать utcnow().

Разбор

В БД хранить timestamptz (PostgreSQL). zoneinfo в стандартной библиотеке с 3.9 и заменил pytz.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.