Выбор ответа Middle Стандартная библиотека обновлено

Почему не datetime.utcnow()

Вопрос

Почему datetime.utcnow() считается устаревшим (deprecated с Python 3.12)?

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

Выберите вариант, и откроется разбор.

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

Коротко

Правильный ответ: Он отдаёт naive-время, его легко принять за локальное. utcnow() даёт текущее время UTC, но без tzinfo, и дальше его могут принять за локальное, например .timestamp() посчитает его в локальной зоне и получит сдвиг.

Варианты ответа

  1. Он возвращает время по Москве, а не UTC
  2. Он работает только в Linux и падает в Windows
  3. Он возвращает строку вместо объекта datetime
  4. Он отдаёт naive-время, его легко принять за локальноеправильный ответ

Разбор

utcnow() даёт текущее время UTC, но без tzinfo, и дальше его могут принять за локальное, например .timestamp() посчитает его в локальной зоне и получит сдвиг. Рекомендуемая замена: datetime.now(timezone.utc), это aware-объект. Платформа и тип результата тут ни при чём.

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

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