Python将日期字符串转换为datetime

时间:2015-05-09 13:09:08

标签: python datetime

我试图将日期字符串转换为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'

3 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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

详细地说,您可以参考python文档。它有清晰的描述和例子。

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

答案 2 :(得分:0)

您可以使用easy_date轻松实现:

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