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

Python使用strptime转换带时区时间戳触发ValueError如何解决?

问题根因
  • 核心错误为年份格式化符不匹配:%y仅支持匹配两位数字的年份(如21对应2021年),你输入的时间戳为四位完整年份2021,需要使用大写的%Y作为年份匹配符。
  • 你猜测的时区冒号问题仅在Python 3.6及更早版本存在:Python 3.7及以上版本中,%z已经原生支持±HH:MM格式的带冒号时区偏移,无需额外处理时区部分的冒号。
解决方案

方案1:适配Python 3.7+(推荐)

仅需将格式串中的%y替换为%Y即可正常解析:

from datetime import datetime

ts = "2021-11-05 10:13:46+11:00"
date_ts = datetime.strptime(ts, "%Y-%m-%d %H:%M:%S%z")
print(date_ts)

方案2:兼容Python 3.6及更早版本

需先处理时区部分的冒号,再进行解析:

from datetime import datetime

ts = "2021-11-05 10:13:46+11:00"
# 移除时区段的冒号
processed_ts = ts[:-3] + ts[-2:]
date_ts = datetime.strptime(processed_ts, "%Y-%m-%d %H:%M:%S%z")
print(date_ts)

方案3:自动解析(无需手动匹配格式)

如果不想手动核对格式串,可以使用第三方库python-dateutil的自动解析能力:

from dateutil import parser

ts = "2021-11-05 10:13:46+11:00"
date_ts = parser.parse(ts)
print(date_ts)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:54:04