TGViewer
Python вопросы с собеседований Python вопросы с собеседований @python_job_interview · 24.9K subscribers
Post #1550 1.75K
🐍 Python считает эти даты равными. Хотя между ними целый час

В ночь перевода часов время 02:30 наступает дважды:


from datetime import datetime, UTC
from zoneinfo import ZoneInfo

tz = ZoneInfo("Europe/Berlin")

a = datetime(2026, 10, 25, 2, 30, tzinfo=tz, fold=0)
b = datetime(2026, 10, 25, 2, 30, tzinfo=tz, fold=1)

print(a)
# 2026-10-25 02:30:00+02:00

print(b)
# 2026-10-25 02:30:00+01:00


Это разные моменты:


a = 00:30 UTC
b = 01:30 UTC


Но Python выдаёт:


a == b # True
b - a # 0:00:00
len({a, b}) # 1


Причина: если у двух datetime один объект tzinfo, при сравнении Python игнорирует смещение и fold.

Из-за этого дедупликация может принять два платежа, заказа или события за одно.

Для сравнения реальных моментов переводите время в UTC:


a_utc = a.astimezone(UTC)
b_utc = b.astimezone(UTC)

a_utc == b_utc
# False

(b_utc - a_utc).total_seconds()
# 3600.0


Используйте astimezone(UTC). Метод replace(tzinfo=UTC) только заменяет метку и не пересчитывает время.

https://docs.python.org/3/library/datetime.html

https://peps.python.org/pep-0495/
  • 🔥 7
  • ❤ 3
  • 👍 2
More from @python_job_interview
  1. Sep 19, 2026✔️ Кто подключился к вашей сети? NetAlertX обнаруживает устройства и уведомляет об изменен…
  2. Sep 18, 2026✔️ QuiverAI выпустила обновление генератора векторной графики Во второе поколение семейств…
  3. Sep 17, 2026📚 Бесплатная книга по математике для Computer Science и Machine Learning - более 2200 стр…
  4. Sep 15, 2026🐍 Python: как найти изменённое поле во вложенном словаре Сравнение before == after покаже…
  5. Sep 15, 2026🔥 Один из лучших обучающих курсов на StepiK по SQL SQL можно знать годами и всё равно тер…
  6. Sep 13, 2026🐍 Python: type(x) == str или isinstance(x, str)? На первый взгляд разницы почти нет. Но о…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →