我正在尝试将一个日期字符串转换为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'
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)
dateutil
模块在Python中处理日期和时间方面非常方便。
使用dateutil,您的日期可以格式化为:
>>> import dateutil.parser as dateparser
>>> dob_python = dateparser.parse('1986-09-22T00:00:00')
>>> dob_python.date()
datetime.date(1986, 9, 22)
parseinfo
,用于更复杂或模糊的字符串表示,但对于您拥有的 标准化日期字符串,不需要额外的参数。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
您可以使用 easy_date以使其变得简单:
import date_converter
dob_python = date_converter.string_to_date('1986-09-22T00:00:00', '%Y-%m-%dT%H:%M:%S')
注意:我是该库的作者
该库使得使用变得简单,因为您只需要考虑想要哪种类型,例如:string_to_date
、date_to_datetime
、string_to_timestamp
等等...