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

Python时间转换函数问题:AM输入无输出,PM输入正常

问题排查与修正

你的代码在处理AM时间时存在逻辑错误,导致输出异常甚至格式错误,具体问题和修正方案如下:

核心问题分析

  1. AM分支小时数拼接错误:
    当AM时间的小时是10、11这类两位数时,代码执行"0" + str(a)会生成"010"、"011"这种三位小时数,不符合24小时制格式;当小时是12时,处理逻辑错误,生成"002:xx:xx"而非正确的"00:xx:xx"。
  2. PM分支12点处理错误:
    输入12PM时,代码先计算12+12=24拼接成"24:xx:xx",后续替换逻辑又生成错误的"124:xx:xx"。
  3. 变量未全局初始化:
    若输入字符串既非AM也非PM,变量c未定义会触发NameError。

修正后的代码

def timeConversion(s):
    period = s[-2:]
    hour = int(s[:2])
    rest = s[2:-2]
    
    if period == "AM":
        if hour == 12:
            converted_hour = "00"
        else:
            # 自动保持两位格式,9转为"09",10保持"10"
            converted_hour = f"{hour:02d}"
    else:  # PM情况
        if hour == 12:
            converted_hour = "12"
        else:
            converted_hour = str(hour + 12)
    
    return f"{converted_hour}{rest}"

代码说明

  • 先拆分时间周期(AM/PM)、小时部分和剩余时分秒部分,逻辑更清晰
  • AM时:12点转为00,其他小时用格式化语法自动补零,保证两位格式
  • PM时:12点保持12,其他小时加12后直接转为字符串
  • 最后拼接成标准24小时制时间字符串

测试示例

print(timeConversion("12:05:45AM"))  # 输出 00:05:45
print(timeConversion("09:30:00AM"))  # 输出 09:30:00
print(timeConversion("10:15:30AM"))  # 输出 10:15:30
print(timeConversion("12:40:22PM"))  # 输出 12:40:22
print(timeConversion("01:00:00PM"))  # 输出 13:00:00

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 19:36:18