Карточка 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 ошибок.