【问题标题】: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 指令的错误。希望他们有一天能修复它。

【讨论】:

  • 这不是错误,这是直到3.2 才实现的功能。
  • 这是 Python 2 文档中的一个错误,因为 %z 被列为被接受。 docs.python.org/2/library/…
【解决方案2】:

似乎 strptime 并不总是支持 %z。 Python 似乎只是调用 C 函数,而 strptime 在您的平台上不支持 %z。

注意:从 Python 3.2 开始,它将始终有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-27
    • 2019-02-19
    • 1970-01-01
    相关资源
    最近更新 更多