【发布时间】:2018-10-28 21:13:39
【问题描述】:
我有两个代表同一时刻的 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" 是什么?为什么它们不同?我做错了什么?
【问题讨论】:
-
山地夏令时 timeanddate.com/time/zones/mdt 和当地标准时间 timeanddate.com/time/local-mean-time.html。我认为您可以只做
b.astimezone(timezone('UTC'))并在 utc 中比较它们,而不是转换 a & b -
这似乎也不起作用。
a != b还是
标签: python python-3.x datetime timezone