You need to enable JavaScript to run this app. Python datetime.fromisoformat()解析JS Date生成的时间字符串为何报ValueError
优惠活动
大模型
产品
解决方案
定价
更多

Python datetime.fromisoformat()解析JS Date生成的时间字符串为何报ValueError

问题产生原因

Python 3.11 之前版本的 datetime.fromisoformat() 方法仅支持严格匹配 YYYY-MM-DDTHH:MM:SS[.ffffff][±HH:MM] 格式的ISO时间字符串,无法识别传入字符串末尾代表UTC时区的Z后缀,因此抛出格式不合法的报错。就算是Python 3.11及以上版本,该方法对Z后缀的兼容也存在限制,通用场景下还是建议先对字符串做预处理。

解决方案

下面提供两种最常用的兼容方案:

  • 方案1:字符串预处理替换后缀(无第三方依赖,全Python版本通用)
    直接将字符串末尾的Z替换为代表UTC时区的+00:00,就可以正常用fromisoformat解析:
mydate = datetime.fromisoformat(form['expirationDate'].replace('Z', '+00:00'))

如果不需要保留时区信息,也可以直接把Z替换为空字符串,解析后得到不带时区的 naive datetime 对象。

  • 方案2:使用第三方库直接解析(适配更多ISO格式变体)
    如果项目允许安装第三方依赖,可以用python-dateutil库的isoparse方法,无需预处理直接兼容带Z的ISO时间格式:
    首先安装依赖:pip install python-dateutil
    解析代码:
from dateutil import parser
mydate = parser.isoparse(form['expirationDate'])

内容的提问来源于stack exchange,提问作者gene b.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 00:15:05