2013-02-27 453 views
6

我對JSON webservice使用默認的python datetime字符串格式。帶時區的默認日期時間字符串格式

然後,我試圖將它與實際的日期時間進行比較。而且我還使用pytz.utc的時區。

這裏是我的字符串日期:

print date 
2013-02-26 21:28:37.261134+01:00 

嘗試我的字符串轉換成DATETIME(編輯對時區與pytz):

if datetime.strptime(date, '%Y-%m-%d %H:%M:%S.%f+%Z') < datetime.now(pytz.utc): 

不幸的是,這是行不通的。

ValueError: time data '2013-02-26 21:28:37.261134+01:00' does not match format '%Y-%m-%d %H:%M:%S.%f%Z' 

誰能告訴我正確的語法爲strptime格式,用我的約會?

+0

雖然您不能將意識到的時區與datetime.now()進行比較,但您必須給後者一個時區。請參閱[如何在python中感知不知道的日期時間時區](http://stackoverflow.com/q/7065164) – 2013-02-27 20:06:17

+0

你對這個副本是正確的,謝謝。谷歌沒有給我什麼......對於時區,我實際上是在我的代碼中使用'datetime.now(pytz.utc)'。對不起,誤導.... – Arthur 2013-02-27 20:07:45

回答

3

基本上這是因爲日期時間模塊事先不知道可用時區是什麼。這有點蹩腳。

我推薦使用dateutil。這是一個第三方軟件包,但它解析了你的字符串。

>>> import dateutil.parser 
>>> dateutil.parser.parse('2013-02-26 21:28:37.261134+01:00')                                                     
datetime.datetime(2013, 2, 26, 21, 28, 37, 261134, tzinfo=tzoffset(None, 3600))