You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python用strptime解析ISO 8601时间戳报ValueError如何解决

报错触发原因

你使用的strptime格式字符串%Y-%m-%dT%H:%M:%SZ仅能匹配精确到秒的时间,而待转换的时间字符串2021-04-06T23:51:50.514Z包含了.514的毫秒部分,格式规则无法匹配该部分内容,因此抛出格式不匹配的ValueError。

处理方案
  • 方案一:调整格式字符串,补充毫秒匹配规则
    使用%f匹配小数点后的毫秒/微秒部分,修改后的代码如下:
import datetime
time = '2021-04-06T23:51:50.514Z'
dt = datetime.datetime.strptime(time, '%Y-%m-%dT%H:%M:%S.%fZ')
  • 方案二:使用Python 3.7+内置的ISO格式解析方法
    无需手动编写格式规则,兼容性更强,适合处理不同精度的ISO 8601时间:
import datetime
time = '2021-04-06T23:51:50.514Z'
# 将末尾的UTC标识Z替换为符合fromisoformat要求的时区标识
dt = datetime.datetime.fromisoformat(time.replace('Z', '+00:00'))
  • 方案三:过滤掉不需要的毫秒部分
    如果业务不需要毫秒精度,可以先截断毫秒内容再解析:
import datetime
time = '2021-04-06T23:51:50.514Z'
clean_time = time.split('.')[0] + 'Z'
dt = datetime.datetime.strptime(clean_time, '%Y-%m-%dT%H:%M:%SZ')

内容的提问来源于stack exchange,提问作者meltedhead

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 05:42:03