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

Python中datetime.strptime遇ValueError:IST时区匹配失败如何解决?

解决Python中strptime无法匹配IST时区缩写的问题

Python标准库的datetime.strptime方法里的%Z指令对时区缩写的支持范围很窄,仅能识别系统预设的少数通用时区(如UTC、GMT),像IST这类存在多义性的时区缩写(可指代印度标准时间、爱尔兰标准时间等),默认不会被识别,因此会抛出匹配错误。

以下是几种可行的解决办法:

方法一:手动替换时区缩写为UTC偏移量

已知IST(印度标准时间)对应的UTC偏移是+05:30,可直接替换字符串中的时区缩写,再用支持偏移量的%z指令解析:

from datetime import datetime
start_time = "2021-07-31 09:43:23 IST"

# 将IST替换为UTC+5:30的标准偏移格式
start_time_with_offset = start_time.replace("IST", "+05:30")
t1 = datetime.strptime(start_time_with_offset, "%Y-%m-%d %H:%M:%S %z")
print('Start time:', t1.time())

方法二:使用第三方库自动识别时区缩写

借助python-dateutil库的解析器,它能自动识别绝大多数常见时区缩写,适用性更强:

  1. 先安装库:
pip install python-dateutil
  1. 编写代码:
from datetime import datetime
from dateutil import parser

start_time = "2021-07-31 09:43:23 IST"
t1 = parser.parse(start_time)
print('Start time:', t1.time())

方法三:用pytz手动指定时区

如果明确知道IST对应的是印度标准时间,可使用pytz库指定具体时区,先解析无时区的时间字符串,再绑定时区:

  1. 安装库:
pip install pytz
  1. 编写代码:
from datetime import datetime
import pytz

start_time = "2021-07-31 09:43:23"
# 先解析不带时区的原生时间对象
naive_time = datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S")
# 绑定印度标准时区
t1 = pytz.timezone('Asia/Kolkata').localize(naive_time)
print('Start time:', t1.time())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 11:01:34