Python如何将日期字符串转换为带Z后缀的ISO格式时间
报错根因
你的格式字符串和输入的时间字符串结构完全不匹配,存在3处错误:
- 输入字符串的日期和时间部分之间是普通空格,格式串里错误加入了
T字符还额外留了空格 - 输入字符串末尾是6位长度的微秒数值,你误用了匹配时区偏移的
%z占位符,也没有匹配微秒对应的%f占位符 - 目标格式末尾的
Z是UTC时区标识,解析阶段不需要处理,要在格式化输出阶段绑定UTC时区后再拼接
可运行实现代码
全版本兼容写法(支持Python 3.0+)
from datetime import datetime, timezone date_string = "2022-04-11 00:00:00.000000" # 按输入字符串的真实结构解析 parsed_dt = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S.%f") # 绑定UTC时区,对应输出里的Z标识 utc_dt = parsed_dt.replace(tzinfo=timezone.utc) # 微秒转毫秒(6位转3位)后拼接为目标格式 final_str = utc_dt.strftime("%Y-%m-%dT%H:%M:%S.") + f"{utc_dt.microsecond // 1000:03d}Z"
运行后final_str的值就是要求的2022-04-11T00:00:00.000Z。
简化写法(支持Python 3.7+)
高版本Python的isoformat方法内置时间精度控制参数,代码更简洁:
from datetime import datetime, timezone date_string = "2022-04-11 00:00:00.000000" parsed_dt = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S.%f").replace(tzinfo=timezone.utc) final_str = parsed_dt.isoformat(timespec="milliseconds").replace("+00:00", "Z")
内容的提问来源于stack exchange,提问作者Newton8989
相关产品推荐
相关产品推荐

