2021-10-12T16:00:00.000+02:00属于什么datetime格式?如何解析?
问题解答
你手里的时间字符串2021-10-12T16:00:00.000+02:00属于ISO 8601标准的带毫秒精度、带时区偏移的日期时间格式,之前解析报错的核心原因是使用的格式串和实际字符串结构不匹配:
- 原字符串包含小数点后的3位毫秒部分,你用的格式串没有匹配该部分的规则
- 格式串末尾的
Z仅用于标识UTC时区,你手里的字符串末尾是+02:00的时区偏移,和Z的规则完全不匹配
正确解析方法
方法1:使用strptime指定正确格式(兼容Python 3.2及以上版本)
正确的格式匹配规则为%Y-%m-%dT%H:%M:%S.%f%z,其中:
%f匹配微秒部分(Python会自动处理3位毫秒补全为6位微秒的逻辑)%z匹配±HH:MM格式的时区偏移
代码示例:
import datetime time_str = "2021-10-12T16:00:00.000+02:00" a = datetime.datetime.strptime(time_str, '%Y-%m-%dT%H:%M:%S.%f%z')
方法2:直接使用fromisoformat(Python 3.7及以上版本推荐)
Python 3.7新增了原生支持ISO 8601格式解析的方法,不需要手动指定格式串,更简单不易出错:
import datetime time_str = "2021-10-12T16:00:00.000+02:00" a = datetime.datetime.fromisoformat(time_str)
内容的提问来源于stack exchange,提问作者user17049514
相关产品推荐
相关产品推荐

