我正在尝试将天真datetime
对象与时区感知datetime
对象进行比较。
我必须改变。
最初我收到了这个错误:
lastDate = start_date + ' ' + errorTime
lastDate = datetime.strptime(lastDate, '%Y-%m-%d %H:%M:%S')
time_diff = lastDate - FirstDate
TypeError: can't compare offset-naive and offset-aware datetimes
首先......我检查了两个日期时间对象的tzinfo ..
>>>FirstDate.tzinfo
>>>tzfile(u'/usr/share/zoneinfo/Europe/London')
>>>lastDate.tzinfo
>>>
这是预期的,因为lastDate
是不知道的。
然后我导入了pytz
并转换了天真的lastDate
日期时间对象:
lastDate = start_date + ' ' + errorTime
lastDate = datetime.strptime(lastDate, '%Y-%m-%d %H:%M:%S')
lastDate = pytz.timezone('Europe/London').localize(lastDate)
time_diff = lastDate - FirstDate
TypeError: Timestamp subtraction must have the same timezones or no timezones
我再次检查时区:
>>>FirstDate.tzinfo
>>>tzfile(u'/usr/share/zoneinfo/Europe/London')
>>>lastDate.tzinfo
>>><DstTzInfo 'Europe/London' GMT0:00:00 STD>
我难以接受......如何将天真的日期时间对象lastDate
提供给tzfile?
注意:我必须转换天真datetime
对象lastDate
以匹配tz感知datetime
对象FirstDate
。我无法修改FirstDate
的tz。
答案 0 :(得分:1)
我是这样做的:
lastDate = lastDate.replace(tzinfo=FirstDate.tzinfo)
lastDate - FirstDate
仅替换原始日期时间的 tzinfo
属性
答案 1 :(得分:0)
您应该能够从现有datetime
获取时区并应用于其他时区。尝试:
lastDate = FirstDate.tzinfo.localize(lastDate)
而不是:
lastDate = pytz.timezone('Europe/London').localize(lastDate)
应该做你想做的事。