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

Python中如何将时区字符串转换为datetime对象及ISO 8601格式?

Python 带时区时间字符串转datetime并格式化ISO 8601方案

针对2022-06-23T05:00:00.006417+00:00Z这类带时区标识的ISO格式时间字符串,可按以下步骤用Python标准库完成处理,无需依赖第三方包:

1. 字符串转带时区的datetime对象

根据你使用的Python版本选择对应写法:

  • Python 3.7 ~ 3.10 版本
    原生datetime.fromisoformat()方法暂不支持直接解析末尾的Z(UTC时区标识,等价于+00:00),需要先对字符串做简单替换再解析:
    from datetime import datetime, timezone
    
    time_str = "2022-06-23T05:00:00.006417+00:00Z"
    # 处理末尾Z标识
    parse_str = time_str.removesuffix("Z") + "+00:00" if time_str.endswith("Z") else time_str
    dt = datetime.fromisoformat(parse_str)
    
  • Python 3.11 及以上版本
    新版标准库已原生支持带Z后缀的ISO字符串解析,可直接调用方法:
    dt = datetime.fromisoformat(time_str)
    

解析得到的dt是带完整时区信息的datetime对象,不会丢失原字符串的偏移量数据。

2. 格式化为标准ISO 8601格式

直接调用datetime对象内置的isoformat()方法即可输出标准格式,可根据需要调整输出样式:

  • 保留原始时区偏移、微秒精度:
    standard_iso = dt.isoformat()
    # 输出值:2022-06-23T05:00:00.006417+00:00
    
  • 输出UTC时区带Z后缀的ISO格式:
    先将时间转换为UTC时区,再拼接Z后缀即可:
    utc_dt = dt.astimezone(timezone.utc)
    utc_iso = f"{utc_dt:%Y-%m-%dT%H:%M:%S.%f}Z"
    # 输出值:2022-06-23T05:00:00.006417Z
    

注意:转换过程中不要移除datetime对象的tzinfo属性,否则会丢失时区信息,导致时间计算、比对出现错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 22:51:18