字符串转换为DateTime对象

问题描述:

我想这个字符串转换成DateTime对象:字符串转换为DateTime对象

Wed Oct 20 16:35:44 +0000 2010 

有没有一种简单的方法来做到这一点?还是必须编写一个RE来解析元素,将Oct转换为10等等?编辑: strptime是伟大的。然而,随着

datetime.strptime(date_str, "%a %b %d %H:%M:%S %z %Y") 

我得到

ValueError: 'z' is a bad directive in format '%a %b %d %H:%M:%S %z %Y' 

即使%Z似乎是正确的。编辑2: %z标记似乎不受支持。见http://bugs.python.org/issue6641。 我通过使用timedelta对象来适当地修改时间。

根据字符串的起始位置,您可能可以使用datetime.strptime来解析它。唯一的问题是,strptime依赖于特定于平台的东西,所以如果该字符串需要能够来自任意其他系统,并且所有日期和月份都没有完全相同(6月或6月),您可以有麻烦。

+0

不确定它是否剥离时区 – 2017-08-22 15:56:28

没有RE需要。试试这个:

from dateutil import parser 

yourDate = parser.parse(yourString) 

为“星期三10月20日十六时35分44秒+0000 2010”返回datetime.datetime(2010, 10, 20, 16, 35, 44, tzinfo=tzutc())

+2

dateutil不在标准库。虽然是PyPI,所以'pip install python-dateutil'起作用。许可证是PSF。 – 2011-03-16 23:48:00

+0

优秀! apt-get install python-dateutil – Andy 2013-05-21 13:46:17

我敢肯定你能在使用datetime.strptime做。

从文档:

datetime.strptime(DATE_STRING,格式)

返回对应于 DATE_STRING日期​​时间,根据 格式解析。这相当于 datetime(*(time.strptime(date_string, 格式)[0:6]))。如果date_string和format不能通过time.strptime()解析 或者 返回的值不是时间 元组,则会引发ValueError 。