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

为什么使用datetime.fromisoformat()会提示isoformat字符串无效,如何解决?

报错原因

Python原生datetime.fromisoformat()方法仅支持带冒号分隔的ISO 8601时区偏移格式(如+00:00),无法识别无冒号的+0000格式,因此会抛出格式错误。

解决方案

方案1:使用strptime指定格式解析(推荐,兼容性最好)

直接用%z格式符匹配不带冒号的时区偏移,无需修改原字符串:

import datetime

mytime = "2021-10-25T14:17:13+0000"
newtime = datetime.datetime.strptime(mytime, "%Y-%m-%dT%H:%M:%S%z")

方案2:修改原字符串补全冒号后用fromisoformat解析

如果偏好使用fromisoformat,可以手动给时区偏移补冒号:

import datetime

mytime = "2021-10-25T14:17:13+0000"
# 给最后四位时区偏移补冒号,把+0000改成+00:00
formatted_time = f"{mytime[:-2]}:{mytime[-2:]}"
newtime = datetime.datetime.fromisoformat(formatted_time)

方案3:Python 3.11+版本直接兼容

Python 3.11及更高版本优化了fromisoformat的兼容性,已经支持解析无冒号的时区偏移格式,直接调用原方法即可正常运行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:18:00