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

Python使用strptime解析+0时区Datetime串报格式不匹配错误

问题根因

报错的核心问题出在%z格式符的匹配规则上:
Python 标准库的datetime.strptime对%z(UTC时区偏移)的格式有强制要求:

  • 可识别的偏移格式必须是±HHMM结构(Python 3.7+ 额外支持±HH:MM的带冒号写法),偏移部分至少要包含4位数字,对应2位小时偏移+2位分钟偏移
  • 你传入的时间字符串里,时区部分是+0,只有1位数字,完全达不到%z的匹配要求,自然会抛出格式不匹配的错误。

你写的%b %d %Y %I: 这部分格式和字符串Dec 03 2020 01: 的结构是完全对应的,这部分没有问题。

修复方法

你没法直接用原生%z匹配这种非标准的1位偏移写法,需要先对原始字符串做预处理,把偏移部分补全为标准格式再解析,参考代码:

from datetime import datetime

raw_time = "Dec 03 2020 01: +0"
# 将非标准的+0替换为UTC+0对应的标准偏移写法+0000
fixed_time = raw_time.replace("+0", "+0000")
dt_obj = datetime.strptime(fixed_time, '%b %d %Y %I: %z')

运行后可以得到正确的datetime对象:2020-12-03 01:00:00+00:00。

如果你的实际场景里可能出现其他个位数偏移(比如+8代表东八区),建议用正则单独捕获偏移部分,自动补零到4位后再拼接解析,避免硬编码替换出现匹配错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 08:45:37