我正在使用Python中的datetime
模块比较两个时间,但我似乎无法创建一个时区感知的UTC时间time
对象。
>>> import pytz, datetime
>>> UTC_TZ = pytz.utc
>>> EASTERN_TZ = pytz.timezone('America/New_York')
>>> d1 = datetime.time(10, tzinfo = UTC_TZ)
>>> d1
datetime.time(10, 0, tzinfo=<UTC>)
>>> d2 = datetime.time(10, tzinfo = EASTERN_TZ)
>>> d2
datetime.time(10, 0, tzinfo=<DstTzInfo 'America/New_York' EST-1 day, 19:00:00 STD>)
>>> d1 < d2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can't compare offset-naive and offset-aware times
这是一个bug吗?我需要使用特殊的UTC时区吗?发生了什么事情?
tzinfo
参数。使用EASTERN_TZ.localize(naive_dt, is_dst=None).astimezone(pytz.utc)
获取日期时间对象进行比较。.astimezone()
不是必需的,但最好始终在内部使用 UTC 时间并将其转换为其他时区仅用于 IO。 - jfs