【问题标题】:parsing datetime beyond microseconds in Python in unknown ISO format以未知的 ISO 格式在 Python 中解析超过微秒的日期时间
【发布时间】:2022-08-10 22:27:41
【问题描述】:

我试图解析这个日期时间:

t = \'2021-08-21 11:23:45.180999936\'

使用datetime strptime 函数:

from datetime import datetime

datetime.strptime(t, \'%Y-%m-%d %H:%M:%S.%f\').time()

我正在努力处理 datime 的最后一个元素,我认为它是微秒 (%f),但是得到了这个错误:

ValueError: unconverted data remains: 936 strptime

因此,如果我理解值错误,则表示日期时间太长了三位数,以至于最后一部分无法达到微秒。如果不是微秒,那么解析这个日期时间的正确方法是什么?这个日期时间的 ISO 格式是什么?

我的问题与this(未回答)问题有关,但格式不同(相关?)(带有Z-suffix)。

  • 时间以纳秒为单位,datetime 不支持。如果您不需要准确度,请使用t[:-3] 截断

标签: python datetime parsing


【解决方案1】:

在 python 中,strftime 和 strptime 最多只允许 6 位小数。它们不完全符合 ISO 8601。

%f 微秒作为十进制数,零填充到 6 位。

取自 datetime.datetime.fromiso 日期时间文档:

警告这不支持解析任意 ISO 8601 字符串 - 它仅用作 datetime.isoformat() 的逆操作。第三方包 dateutil 中提供了功能更全的 ISO 8601 解析器 dateutil.parser.isoparse。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-20
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多