TGViewer
Python tests Python tests @python_testit · 6.9K subscribers
Post #1270 335
🐍 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/
More from @python_testit
  1. Aug 14, 2026Post #1269
  2. Aug 14, 2026photo post
  3. Aug 14, 2026🔥 Python + AI без игрушечных демок. Курс для тех, кто хочет собирать рабочие системы. Ste…
  4. Jul 22, 2026Post #1266
  5. Jul 22, 2026photo post
  6. Jul 15, 2026Post #1264
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 →