2015-05-09 99 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')