我试图比较两次使用Python datetime
模块,但似乎无法在UTC中创建时区感知的time
对象。使用Python比较UTC时间和东部时间使用Python
>>> 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
这是一个错误?有需要使用的特殊UTC时区吗?这是怎么回事?
您不应该在DST中为时区使用'tzinfo'参数。使用'EASTERN_TZ.localize(naive_dt,is_dst = None).astimezone(pytz.utc)'来获取要比较的日期时间对象。 '.astimezone()'不是必需的,但最好始终在内部使用UTC时间,并将其转换为仅在IO上的其他时区 – jfs
请注意,在3.3天赋和感知时间实例之间的相等比较不会引发TypeError。 – kolypto