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

Python时间处理遇ValueError:'00:34 am'不匹配'%I:%M %p'格式

解决时间解析错误并实现加1小时需求

错误原因

%I是Python中12小时制的小时格式符,合法取值范围为01-12,但输入00:34 am使用了00作为小时数,不符合该格式要求,因此触发ValueError。

解决方案

以下两种方法均可解决问题,可根据场景选择:

方法一:预处理输入字符串适配12小时制格式

将12小时制输入中的00:替换为12:(00:34 am本质为午夜12:34),再用原格式解析:

from datetime import datetime, timedelta

def add_one_hour(time_str):
    # 预处理:把am时段的00替换为12
    processed_time = time_str.replace("00:", "12:") if "am" in time_str.lower() else time_str
    dt = datetime.strptime(processed_time, "%I:%M %p")
    dt += timedelta(hours=1)
    return dt.strftime("%I:%M %p")

original_time_str = '00:34 am'
modified_time_str = add_one_hour(original_time_str)
print(modified_time_str)  # 输出: 01:34 AM

方法二:改用24小时制解析,再转12小时制输出

使用24小时制格式符%H解析输入(00在24小时制中合法),处理后转换为12小时制格式输出:

from datetime import datetime, timedelta

def add_one_hour(time_str):
    # 拆分时间部分与AM/PM标识
    time_part, period = time_str.split()
    dt = datetime.strptime(time_part, "%H:%M")
    dt += timedelta(hours=1)
    # 自动转换为带AM/PM的12小时制格式
    return dt.strftime("%I:%M %p")

original_time_str = '00:34 am'
modified_time_str = add_one_hour(original_time_str)
print(modified_time_str)  # 输出: 01:34 AM

说明

两种方法最终都能正确输出加1小时后的结果,方法二更通用,可兼容更多不规范的12小时制输入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 12:32:03