从HTTP响应提取过期日期时datetime.fromisoformat报错求助
解决datetime.fromisoformat解析日期报错的问题
你遇到的错误是因为提取到的日期字符串格式不符合datetime.fromisoformat()的解析规则,最常见的情况是日期以Z结尾(比如2025-12-31T23:59:59Z),Python 3.11及更早版本不支持这种格式,会抛出ValueError: Invalid isoformat string。
给你几个可行的解决办法:
替换Z字符(兼容低版本Python)
把日期里的Z换成+00:00,再用fromisoformat()解析:from datetime import datetime Expiry_Date = Expiry_Data['response']['Expiry Date'] # 替换Z为UTC时区标识 fixed_date_str = Expiry_Date.replace('Z', '+00:00') ExpiryDate = datetime.fromisoformat(fixed_date_str) print(ExpiryDate)用dateutil库解析(通用适配各种格式)
如果不确定日期格式,用python-dateutil的解析工具,能自动识别多种格式:- 先安装库:
pip install python-dateutil - 修改代码:
from dateutil import parser Expiry_Date = Expiry_Data['response']['Expiry Date'] ExpiryDate = parser.parse(Expiry_Date) print(ExpiryDate)
- 先安装库:
升级Python到3.11+
Python 3.11及以后的版本已经支持直接解析带Z的日期字符串,升级后就能直接用原来的代码。
另外建议先打印Expiry_Date的具体值,确认日期格式后再选对应的方法:
print("提取到的日期:", Expiry_Date)
内容的提问来源于stack exchange,提问作者Paul Hanna
相关产品推荐
相关产品推荐

