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

使用datetime.strptime处理无前导零填充的时间数据时出现格式匹配错误的问题咨询

解决datetime.strptime的时间格式匹配异常问题

这个错误的核心原因是小时部分的格式不匹配:你使用的%I格式码要求12小时制的小时必须是带前导零的两位数字(比如01、02...12),但你的输入时间里的小时是单个数字2,导致格式校验失败。(日期部分的3或03都能和%d匹配,这不是问题所在)

下面是两种可行的解决办法:

方法1:修改输入字符串,补全小时的前导零

直接把输入中的2:58 pm改成02:58 pm,让小时部分符合%I的格式要求:

from datetime import datetime
today = datetime.strptime('Sep 3 2021 02:58 pm', '%b %d %Y %I:%M %p')
print(today)  # 输出:2021-09-03 14:58:00

方法2:适配单个数字的小时(无需修改输入)

如果你不想改动原始输入字符串,可以用以下两种方式处理:

方式2.1:用正则自动补全小时前导零

通过正则表达式识别单个数字的小时,自动补上前导零后再解析:

import re
from datetime import datetime

input_str = 'Sep 3 2021 2:58 pm'
# 匹配单个数字开头的时间,补上前导零
processed_str = re.sub(r'(\b\d:\d{2}\b)', lambda m: f"0{m.group(1)}", input_str)
today = datetime.strptime(processed_str, '%b %d %Y %I:%M %p')
print(today)  # 输出:2021-09-03 14:58:00

方式2.2:用dateutil自动解析(推荐)

python-dateutil库可以自动识别绝大多数常见时间格式,不用手动指定格式字符串,非常省心:

from dateutil import parser

today = parser.parse('Sep 3 2021 2:58 pm')
print(today)  # 输出:2021-09-03 14:58:00

注意:使用前需要先安装库,执行pip install python-dateutil即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 09:34:04