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

Python转换带Z后缀的ISO时间为Unix时间戳报错如何处理

你提到的2020-01-01T01:39:40.000000Z属于ISO 8601标准的UTC时间格式,末尾的Z是时区标识,代表零时区(UTC+0),你的猜测正确。

报错原因

Python 3.11之前版本的datetime.fromisoformat()方法不支持直接解析带Z后缀的ISO格式字符串,仅支持无后缀、或时区部分为±HH:MM格式的输入,因此你传入带Z的字符串会触发ValueError。

解决方案

方案1:Python 3.11及以上版本直接使用

3.11版本已经对fromisoformat做了更新,原生支持Z后缀的ISO时间解析,你的原代码可以直接运行,无需修改。

方案2:低版本Python使用strptime指定格式解析

不需要手动去除末尾的.000000Z,直接指定匹配的格式字符串即可,注意要手动绑定UTC时区,避免转时间戳时默认使用本地时区导致结果错误:

from datetime import datetime, timezone

time_str = '2020-01-01T01:39:40.000000Z'
# 按格式解析后绑定UTC时区
dt = datetime.strptime(time_str, "%Y-%m-%dT%H:%M:%S.%fZ").replace(tzinfo=timezone.utc)
unix_timestamp = dt.timestamp()
print(unix_timestamp)
# 输出:1577842780.0

方案3:使用第三方库python-dateutil解析

如果项目允许安装第三方依赖,python-dateutil的解析器可以自动适配各种ISO时间变体,无需手动指定格式:

from dateutil import parser

time_str = '2020-01-01T01:39:40.000000Z'
dt = parser.isoparse(time_str)
unix_timestamp = dt.timestamp()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:45:04