我有一个'2009/05/13 19:19:30 -0400'形式的日期字符串。 对于尾随时区规范,似乎以前版本的Python可能支持strptime中的%z格式标记,但2.6.x似乎已经删除了它。
将此字符串解析为日期时间对象的正确方法是什么?
您可以使用dateutil中的解析函数:
>>> from dateutil.parser import parse
>>> d = parse('2009/05/13 19:19:30 -0400')
>>> d
datetime.datetime(2009, 5, 13, 19, 19, 30, tzinfo=tzoffset(None, -14400))
这样您就可以获得可以使用的日期时间对象。
正如所回答的那样,dateutil2.0是为Python 3.0编写的,不适用于Python 2.x.对于Python 2.x,需要使用dateutil1.5。
这在Python 2.6上的dateutil版本2.0中不起作用
这对我来说很好(dateutil 2.1),Python 2.7.2; Python 3不是必需的。请注意,如果从pip进行安装,则包名称为python-dateutil。
Python 3.2+支持%z:
>>> from datetime import datetime
>>> datetime.strptime('2009/05/13 19:19:30 -0400', '%Y/%m/%d %H:%M:%S %z')
datetime.datetime(2009, 5, 13, 19, 19, 30,
tzinfo=datetime.timezone(datetime.timedelta(-1, 72000)))
在早期版本:
from datetime import datetime
date_str = '2009/05/13 19:19:30 -0400'
naive_date_str, _, offset_str = date_str.rpartition(' ')
naive_dt = datetime.strptime(naive_date_str, '%Y/%m/%d %H:%M:%S')
o