Python中将JSON带时区时间戳转为datetime及格式匹配报错解决
错误原因
你使用的格式串结尾%fZ仅适配末尾为Z标识的UTC标准时间格式,而你待转换的字符串末尾是+01:00的带小时偏移的时区标识,因此出现格式不匹配报错。
解决方法
提供两种常用可行方案:
- 方案1(Python 3.7+ 推荐,无需手动写格式串)
直接调用datetime.fromisoformat方法,原生支持ISO 8601格式的时间字符串解析:
import datetime time_str = '2021-11-21T18:57:18.000+01:00' dt_obj = datetime.datetime.fromisoformat(time_str)
- 方案2(自定义格式串适配所有Python版本)
将格式串末尾的Z替换为适配时区偏移的格式符%z即可:
import datetime time_str = '2021-11-21T18:57:18.000+01:00' dt_obj = datetime.datetime.strptime(time_str, "%Y-%m-%dT%H:%M:%S.%f%z")
额外说明
如果不需要保留时区信息,可以转换后去除时区标记,生成无时区属性的datetime对象:
dt_naive = dt_obj.replace(tzinfo=None)
内容的提问来源于stack exchange,提问作者Alexander Brandhaug
相关产品推荐
相关产品推荐

