我須要將RFC 3339字符串(如"2008-09-03T20:56:35.450686Z"
解析爲Python的datetime
類型。 python
我在Python標準庫中找到了strptime
,但這不是很方便。 git
作這個的最好方式是什麼? github
您獲得的確切錯誤是什麼? 像下面嗎? 測試
>>> datetime.datetime.strptime("2008-08-12T12:20:30.656234Z", "%Y-%m-%dT%H:%M:%S.Z") ValueError: time data did not match format: data=2008-08-12T12:20:30.656234Z fmt=%Y-%m-%dT%H:%M:%S.Z
若是是,則能夠在「。」上分割輸入字符串,而後將微秒添加到得到的日期時間。 spa
嘗試這個: code
>>> def gt(dt_str): dt, _, us= dt_str.partition(".") dt= datetime.datetime.strptime(dt, "%Y-%m-%dT%H:%M:%S") us= int(us.rstrip("Z"), 10) return dt + datetime.timedelta(microseconds=us) >>> gt("2008-08-12T12:20:30.656234Z") datetime.datetime(2008, 8, 12, 12, 20, 30, 656234)
import re,datetime s="2008-09-03T20:56:35.450686Z" d=datetime.datetime(*map(int, re.split('[^\d]', s)[:-1]))
嘗試使用iso8601模塊; 它正是這樣作的。 orm
python.org Wiki上的WorkingWithTime頁面上提到了其餘幾個選項。 ip
請注意,在Python 2.6+和Py3K中,%f字符捕獲微秒。 字符串
>>> datetime.datetime.strptime("2008-09-03T20:56:35.450686Z", "%Y-%m-%dT%H:%M:%S.%fZ")
在這裏查看問題 get
我已經爲ISO 8601標準編寫了一個解析器,並將其放在GitHub上: https : //github.com/boxed/iso8601 。 此實現支持規範中的全部內容,但持續時間,間隔,週期性間隔和日期不在Python datetime模塊支持的日期範圍內。
測試包括在內! :P