【问题标题】:python: datetime.datetime.strptime error with %z directivepython: 带有 %z 指令的 datetime.datetime.strptime 错误
【发布时间】:2017-10-03 13:42:28
【问题描述】:
我在将时间字符串解析为日期时间时遇到问题。我的代码片段如下:
datetime.datetime.strptime('16/Sep/2017:00:00:00 +0000', '%d/%b/%Y:%M:%H:%S %z')
我收到以下错误:
ValueError: 'z' is a bad directive in format '%d/%b/%Y:%M:%H:%S %z'
我使用的是 Python 2.7.10。
请提出简单的解决方案,而不是复杂的代码,因为我在具有数百万行的日志文件上运行它。谢谢。
未找到此特定问题的解决方案。
【问题讨论】:
标签:
python
parsing
datetime
timestamp
strptime
【解决方案1】:
使用 dateutil 模块解决。这是我的解决方案:
from dateutil.parser import parse
parse('16/Sep/2017:00:00:00 +0000'.replace(':', ' ',1))
datetime.datetime(2015, 6, 24, 0, 1, 3, tzinfo=tzoffset(None, 7200))
Python 2.7.* 中存在关于 %z 指令的错误。希望他们有一天能修复它。
【解决方案2】:
似乎 strptime 并不总是支持 %z。 Python 似乎只是调用 C 函数,而 strptime 在您的平台上不支持 %z。
注意:从 Python 3.2 开始,它将始终有效。