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

Python3.6如何将带冒号时区的ISO时间串转为保留时区的datetime对象

问题原因

Python 3.6 中 strptime 方法的 %z 格式符仅支持无冒号的时区偏移格式(如 +0200),无法识别带冒号的 +02:00 格式,因此会出现转换失败的问题。

解决方案

方案1:无第三方依赖,预处理字符串后转换

只需移除时间字符串中时区部分的最后一个冒号,即可匹配 %z 的格式要求,转换后时区信息会完整保留:

import datetime

time_str = "2021-07-04T00:00:00+02:00"
# 移除时区段的冒号:把最后三位的`:XX`转为`XX`
processed_time_str = time_str[:-3] + time_str[-2:]
dt_obj = datetime.datetime.strptime(processed_time_str, "%Y-%m-%dT%H:%M:%S%z")

print(dt_obj)
# 输出示例:2021-07-04 00:00:00+02:00

方案2:使用第三方库直接解析

如果项目允许引入依赖,可以安装 python-dateutil 库,无需修改原字符串即可直接解析:

  1. 安装依赖:
pip install python-dateutil
  1. 转换代码:
from dateutil import parser

time_str = "2021-07-04T00:00:00+02:00"
dt_obj = parser.parse(time_str)

print(dt_obj)
# 输出示例:2021-07-04 00:00:00+02:00

补充说明

如果你后续升级到 Python 3.7 及以上版本,可以直接使用原生的 datetime.fromisoformat() 方法,无需预处理也无需第三方库,直接调用即可:

# Python 3.7+ 原生支持
import datetime
dt_obj = datetime.datetime.fromisoformat("2021-07-04T00:00:00+02:00")

内容的提问来源于stack exchange,提问作者Satya Dev Yadav

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 18:21:01