У меня есть два объекта datetime Python, которые представляют один и тот же момент времени:
a = datetime.datetime(2018, 10, 28, 13, 26, 30)
b = datetime.datetime(2018, 10, 28, 7, 26, 30)
Оба поступают из разных источников.
Я знаю, что первый в UTC, а второй в "America/Edmonton"
(MDT).
Первоначально ни к одному из них не привязан часовой пояс.
Мне нужно добавить часовые пояса к этим объектам и сравнить их так, чтобы a == b
было True
.
Что я сделал, это было:
import datetime
from pytz import timezone
a = datetime.datetime(2018, 10, 28, 13, 26, 30)
b = datetime.datetime(2018, 10, 28, 7, 26, 30)
a = a.replace(tzinfo=timezone("UTC"))
b = b.replace(tzinfo=timezone("America/Edmonton"))
a = a.astimezone(timezone("America/Edmonton"))
b = b.astimezone(timezone("America/Edmonton"))
print(repr(a))
# Result: datetime.datetime(2018, 10, 28, 7, 26, 30, tzinfo=<DstTzInfo 'America/Edmonton' MDT-1 day, 18:00:00 DST>)
print(repr(b))
# Result: datetime.datetime(2018, 10, 28, 7, 26, 30, tzinfo=<DstTzInfo 'America/Edmonton' LMT-1 day, 16:26:00 STD>)
a == b # Results in False for some reason
Что такое "MDT-1 day, 18:00:00 DST"
против "LMT-1 day, 16:26:00 STD"
? Почему они разные? Что я делаю не так?