Тесты и задания python разработчиков
По всем вопросам- @notxxx1
@ai_machinelearning_big_data - машинное обучение
@programming_books_it - бесплатные it книги
@pythonl - 🐍
@ArtificialIntelligencedl - AI
@datascienceiot -ds книги
Post #1270
329
🐍 Python считает эти даты равными. Хотя между ними целый час
В ночь перевода часов время 02:30 наступает дважды:
Это разные моменты:
Но Python выдаёт:
Причина: если у двух
Из-за этого дедупликация может принять два платежа, заказа или события за одно.
Для сравнения реальных моментов переводите время в UTC:
Используйте
https://docs.python.org/3/library/datetime.html
https://peps.python.org/pep-0495/
В ночь перевода часов время 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/










