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

Python处理带时区时间字符串时出现格式不匹配错误

解决方法

错误原因

你遇到的问题有两个:

  1. 格式字符串中%S.%f后多了一个空格,但你的时间字符串里毫秒部分后直接跟时区偏移(+00:00),没有空格;
  2. 你用了%Z格式符,它用来匹配时区名称(比如UTC、EST),但你的时间字符串末尾是+00:00这种数值型时区偏移,对应正确的格式符是小写的%z。

修正方案

方案一:直接使用数据库返回的datetime对象(推荐)

Django的DateTimeField查询后返回的本身就是datetime对象,不需要转成字符串再解析,简化代码:

utc = Rawdata.objects.filter(id=r).values_list('created_at', flat=True).first()

方案二:修正格式字符串解析

如果必须处理字符串形式的时间,把格式字符串改成%Y-%m-%d %H:%M:%S.%f%z:

from datetime import datetime

# 假设你已经拿到了时间字符串
time_str = '2022-12-29 11:47:07.444185+00:00'
utc = datetime.strptime(time_str, '%Y-%m-%d %H:%M:%S.%f%z')

兼容低Python版本(3.7以下)

如果你的Python版本低于3.7,%z不支持带冒号的时区格式(+00:00),需要先去掉时区部分的冒号:

from datetime import datetime

time_str = '2022-12-29 11:47:07.444185+00:00'
# 移除时区里的冒号,变成+0000
time_str_fixed = time_str[:-3] + time_str[-2:]
utc = datetime.strptime(time_str_fixed, '%Y-%m-%d %H:%M:%S.%f%z')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 20:43:51