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

12小时制转24小时制代码异常:输入10:10:10PM输出不符预期

12小时制转24小时制代码的问题分析

核心错误:时段标识(AM/PM)提取逻辑完全错误

代码中这一行是问题根源:

hours, minutes, indicator = map(int, s[:-2].split(":"))
  • 对于输入10:10:10PM,s[:-2]会截取掉最后两位的PM,得到10:10:10;按:拆分后是["10", "10", "10"],再通过map(int, ...)转成三个整数。
  • 此时indicator被错误赋值为秒数10(整数类型),而非我们需要的字符串"PM"。后续判断indicator == "PM"时,整数和字符串永远不相等,导致PM时段的小时加12逻辑完全没有触发,所以输入10:10:10PM时,小时数始终是10,无法得到预期的22。

次要问题:冗余无效的代码

int(hours)
int(minutes)

这两行完全多余,因为前面的map(int, ...)已经将hours和minutes转换成整数类型了,这两行没有任何实际作用。

额外问题:秒数被错误固定为0

原代码返回时用0填充秒数,会丢失输入中的实际秒值,不符合时间转换的需求。


修正后的代码

def timeconversion(s):
    # 拆分时间部分和时段标识
    time_part = s[:-2]
    indicator = s[-2:]
    hours, minutes, seconds = map(int, time_part.split(":"))
    
    if indicator == "PM":
        if hours != 12:
            hours += 12
    elif indicator == "AM" and hours == 12:
        hours = 0
    # 保留输入的实际秒数
    return '{:02d}:{:02d}:{:02d}'.format(hours, minutes, seconds)

if __name__ == "__main__":
    input_instring = input("enter: ")
    result = timeconversion(input_instring)
    print(result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 06:10:01