Python时间转换函数问题:AM输入无输出,PM输入正常
问题排查与修正
你的代码在处理AM时间时存在逻辑错误,导致输出异常甚至格式错误,具体问题和修正方案如下:
核心问题分析
- AM分支小时数拼接错误:
当AM时间的小时是10、11这类两位数时,代码执行"0" + str(a)会生成"010"、"011"这种三位小时数,不符合24小时制格式;当小时是12时,处理逻辑错误,生成"002:xx:xx"而非正确的"00:xx:xx"。 - PM分支12点处理错误:
输入12PM时,代码先计算12+12=24拼接成"24:xx:xx",后续替换逻辑又生成错误的"124:xx:xx"。 - 变量未全局初始化:
若输入字符串既非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
相关产品推荐
相关产品推荐

