Python将日期字符串转换为日期时间

5

我正在尝试将一个日期字符串转换为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'
4个回答

8

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

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,用于更复杂或模糊的字符串表示,但对于您拥有的 标准化日期字符串,不需要额外的参数。

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


0

您可以使用 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_datedate_to_datetimestring_to_timestamp等等...


1
这似乎是你的库。典型的网站礼节是提供一条相应的注释,例如“注意:我是这个库的作者”。同时也很不错能够简要说明一下这个库的作用和为什么使用它比起在其他答案中提供的原生代码更为优选。这里的“易用”具体指什么呢?谢谢。 - ggorlen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接