2015-05-09 98 views
1

我試着去的日期字符串轉換成Python,但得到的錯誤 -Python的轉換日期字符串到日期時間

字符串:'1986-09-22T00:00:00'

dob_python = datetime.strptime('1986-09-22T00:00:00' , '%Y-%m-%d%Z%H-%M-%S').date() 

錯誤: -

ValueError: time data '1986-09-22T00:00:00' does not match format '%Y-%m-%d%Z%H-%M-%S' 

回答

5

T不是時區。它是只是一個分隔符。請勿使用%Z來嘗試解析它,請使用文字T。你的時間分隔符也必須匹配;你需要尋找:冒號,破折號不是:

dob_python = datetime.strptime('1986-09-22T00:00:00', '%Y-%m-%dT%H:%M:%S').date() 
#               ^^^

演示:

>>> from datetime import datetime 
>>> datetime.strptime('1986-09-22T00:00:00', '%Y-%m-%dT%H:%M:%S').date() 
datetime.date(1986, 9, 22) 
0

dateutil模塊大大與蟒蛇日期時間打交道時簡化了工作。

使用dateutil,你日期可能被格式化這樣的:

>>> import dateutil.parser as dateparser 
>>> dob_python = dateparser.parse('1986-09-22T00:00:00') 
>>> dob_python.date() 
datetime.date(1986, 9, 22) 

分析函數有一個可選的參數parseinfo對於較複雜或不明確的字符串表示,但對於標準十歲上下日期字符串你有,額外的參數是不需要的。

1

注意您對應的格式字符串 - 否則會出錯。

from datetime import datetime 
datetime.strptime('1986-09-22T01:02:03', '%Y-%m-%dT%H:%M:%S').date() 
#datetime.date(1986, 9, 22) 

1986配襯%Y

09配襯%m

22配襯%d

01配襯%H

02配襯%M

03配襯%S

詳細,您可以參考蟒蛇文件。它有明確的描述和例子。

https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior

0

您可以使用easy_date以方便:

import date_converter 
dob_python = date_converter.string_to_date('1986-09-22T00:00:00', '%Y-%m-%dT%H:%M:%S')