2017-04-20 61 views
2

我想比較一個天真的datetime對象與知道時區的datetime對象。如何將時區格式文件傳遞給Python中的天真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 

首先...我檢查我的兩個datetime對象的tzinfo ..

>>>FirstDate.tzinfo 
>>>tzfile(u'/usr/share/zoneinfo/Europe/London') 

>>>lastDate.tzinfo 
>>> 

這是意料之中的,因爲lastDate是TZ不知情。

我然後導入pytz並轉換天真lastDate DateTime對象:再次

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> 

我難倒...我怎麼給天真datetime對象lastDate a tzfile?

注:我必須轉換天真datetime對象lastDate匹配TZ知道datetime對象FirstDate。我不能修改FirstDate的tz。

回答

0

您應該可以從現有的datetime獲取時區並應用到另一個時區。嘗試:

lastDate = FirstDate.tzinfo.localize(lastDate) 

代替:

lastDate = pytz.timezone('Europe/London').localize(lastDate) 

應該做的你是什麼之後。

+0

嗨@Stephen我試過這個,現在我收到以下錯誤: 'AttributeError:'tzfile'對象沒有屬性'localize'' – nrs90

相關問題