大家都对wBerry造成的困惑感到满意,但是为了得到一个简洁的答案,我将在这里进行总结。
根据datetime文档,当比较两个datetime.time对象时:“如果两个比较符都知道并且具有不同的tzinfo属性,则首先通过减去其UTC偏移量(从self.utcoffset()获得)来调整比较符”
在您给出的示例中,比较会引发TypeError,因为EASTERN_TZ.utcoffset()返回None。utcoffset为None,因为美国东部遵守夏令时,因此与UTC的时间偏移取决于datetime.time中不可用的日期。
您应该使用datetime.datetime对象进行跨时区比较:
>>> import pytz, datetime
>>> UTC_TZ = pytz.utc
>>> EASTERN_TZ = pytz.timezone('America/New_York')
>>> d1 = datetime.datetime(2012, 1, 1, 10, 0, tzinfo=UTC_TZ)
>>> d2 = datetime.datetime(2012, 1, 1, 10, 0, tzinfo=EASTERN_TZ)
>>> d1 < d2
True