2016-12-15 118 views
0

我試圖將UTC字符串轉換爲python datetime對象。Python日期時間對象不顯示正確日期

我想要轉換的字符串是:2016-12-16T23:00:00.000Z,它的格式爲UTC。當我將代碼轉換到不同的時區時,我得到2016-12-16 23:00:00+01:00這是一個正確的行爲。

我的問題是,爲什麼當我訪問datetime對象,天仍是16,而不是17,因爲我希望當1 hour添加到23:00發生。

我錯過了什麼?

我的代碼

tz = pytz.timezone("Europe/Ljubljana") 
dt = datetime.datetime.strptime(start_date, "%Y-%m-%dT%H:%M:%S.000Z") 
date = tz.localize(dt) 

print 'Date: ', date.strftime('%d') 
print 'Date: ', date 

結果

Date: 16 
Date: 2016-12-16 23:00:00+01:00 
+0

嘗試使用日期= pytz.utc.normalize(tz.localize(DT)),或者你需要把一些抵消 –

回答

1

這是預期的行爲。 dt沒有設定時區。當您撥打tz.localize(dt)時,您只需指定時區。

這裏是你想要做什麼:

tz = pytz.timezone("Europe/Ljubljana") 
dt = datetime.datetime.strptime(start_date, "%Y-%m-%dT%H:%M:%S.000Z") 
dt = dt.replace(tzinfo=pytz.utc) # you specify the time is UTC 
print dt.astimezone(tz) # and now you convert dt to your preferred timezone 

您獲得:

datetime.datetime(2016, 12, 17, 0, 0, tzinfo=<DstTzInfo 'Europe/Ljubljana' CET+1:00:00 STD>)