【问题标题】:Python3 Converting a string into datetime with zulu object inPython3使用zulu对象将字符串转换为日期时间
【发布时间】:2020-11-19 20:28:29
【问题描述】:

无法在 Python3.8.5 中将字符串转换为 DateTime 对象。

>>> from datetime import datetime
>>> x = "2020-06-27T16:03:00+0000"

参考后我尝试过的各种格式:

'%Y-%m-%dT%H:%M:%S.000%z'
'%Y-%m-%dT%H:%M:%S.f%z'
'%Y-%m-%dT%H:%M:%S+%z'

我尝试了许多其他没有多大意义的组合。 我需要添加 Zulu 时间,因为我的代码处理来自国际跟踪的一堆事件。

我所看到的一切都是关于 Python2.7 在 Zulu 时间格式方面存在问题。

已解决: 祖鲁时间包括+- 因此

'%Y-%m-%dT%H:%M:%S%z'

是正确的格式。 当我可以为其他人简要回答时会回答

【问题讨论】:

标签: python python-3.x datetime iso


【解决方案1】:

对于 Python 3.7+,您还可以使用 fromisoformat。它需要str.replace,但可能是faster

from datetime import datetime
x = "2020-06-27T16:03:00+0000"
dt = datetime.fromisoformat(x.replace('+0000', '+00:00'))
print(repr(dt))
>>> datetime.datetime(2020, 6, 27, 16, 3, tzinfo=datetime.timezone.utc)

【讨论】:

    【解决方案2】:

    + 符号是时区偏移的一部分,因此格式字符串不需要包含 + 符号

    >>> from datetime import datetime
    >>> x = "2020-06-27T16:03:00+0000"
    >>>
    >>> datetime.strptime(x, '%Y-%m-%dT%H:%M:%S%z')
    datetime.datetime(2020, 6, 27, 16, 3, tzinfo=datetime.timezone.utc)
    

    【讨论】:

      【解决方案3】:

      你可以使用dateutil

      In [15]: from dateutil import parser
      
      In [16]: x = "2020-06-27T16:03:00+0000"
      
      In [17]: parser.parse(x)
      Out[17]: datetime.datetime(2020, 6, 27, 16, 3, tzinfo=tzutc())
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-12-13
        • 2012-10-18
        • 1970-01-01
        • 1970-01-01
        • 2023-04-09
        • 1970-01-01
        相关资源
        最近更新 更多