【问题标题】:How to parse str(my_datetime) using strptime?如何使用 strptime 解析 str(my_datetime)?
【发布时间】:2017-05-04 20:51:34
【问题描述】:

这是日期时间的default string representation:

>>> from datetime import datetime, timezone
>>> dt = datetime(2017, 1, 1, tzinfo=timezone.utc)
>>> print(dt)
2017-01-01 00:00:00+00:00

用datetime.strptime 解析的正确格式字符串是什么?也就是说,用什么格式代替“???”始终具有以下不变量:

>>> dt == datetime.strptime(str(dt), "???")
True

【问题讨论】:

    标签: python datetime timezone strptime


    【解决方案1】:

    请注意,str(d) 被记录为等同于 d.isoformat(' ')。这以%Y-%m-%d %H:%M:%S (2017-01-01 00:00:00) 开头,然后:

    • 要么什么都没有,要么.%f,这取决于微秒部分是否为非零。
    • 要么没有任何内容,要么没有类似+HH:MM 的偏移量,具体取决于实例是否支持时区。

    datetime.strptime 不支持可选部分,因此没有一个 format 参数可以匹配所有可能的输出。

    在 Python 3.7+ 中,您可以使用 datetime.fromisoformat 解析 datetime.isoformat 输出。由 Paul Ganssle 在issue15873 中贡献。

    【讨论】:

    • 注意: 一个细节已经有点过时了,strptime %z 现在支持偏移中的冒号(Python 3.7 新增)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    相关资源
    最近更新 更多