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

Python strptime转换含冒号时区时间报格式不匹配错误如何解决?

问题根因

Python 3.11 以下版本中,strptime 方法的 %z 格式符仅支持无冒号的时区偏移格式(如 +0400),你传入的时间字符串时区部分为带冒号的 +04:00,和指定的格式串不匹配,因此抛出该报错。

解决方案

你可以根据自己的运行环境选择以下任意一种方案修复:

  • 方案1:升级Python版本到3.11及以上。该版本开始%z已原生支持带冒号的时区偏移格式,原有代码无需任何修改即可正常运行。
  • 方案2:兼容低版本Python,预处理时间字符串去掉时区部分的冒号,修改后的代码如下:
from datetime import datetime

def time_converter(time):
    if time is None:
        time = ''
    else:
        # 去除时区偏移中的冒号,例:将+04:00转换为+0400
        if ':' in time[-3:]:
            time = time[:-3] + time[-2:]
        time_obj = datetime.strptime(time, '%Y-%m-%dT%H:%M:%S.%f%z')
        time = time_obj.strftime('%Y-%m-%d %H:%M:%S')
    return time
  • 方案3:使用第三方库python-dateutil自动解析时间格式,无需手动匹配格式串,适配性更强。首先执行pip install python-dateutil安装依赖,再修改代码如下:
from dateutil import parser
from datetime import datetime

def time_converter(time):
    if time is None:
        time = ''
    else:
        time_obj = parser.parse(time)
        time = time_obj.strftime('%Y-%m-%d %H:%M:%S')
    return time

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:54:05