首页 > 解决方案 > 如果转换已经完成,如何以时间格式输入数字?

问题描述

我正在尝试获取一个字符串并转换为 24 小时制。例如,如果给我字符串“07:05:45PM”,它应该返回“19:05:45”。我已经完成了所有必要的转换,我只是不确定我应该如何将它们放在一起并拥有它,以便如果只有 5 分钟或 5 秒,它会像“xx:05:06”这样放置一个零.

def timeConversion(s):
    nums = s[:8]
    hh,mm,ss = [v for v in nums.split(":")]
    time = s[8:]
    if time == 'AM':
        return nums
    else:
        total = (int(hh) * 3600 + int(mm) * 60 + int(ss)) + 43200
        if s == "12:00:00PM":
            return nums
        hh = total // 3600
        mm = total // 60 % 60
        ss = total % 60

print(timeConversion("07:05:45PM"))

标签: python

解决方案


只有小时数和后缀在您的输出中具有任何意义。关键是 12AM 是 00,而 12PM 是 12。12:00 并不是唯一值得这种待遇的时间:12:01 也是如此。使用模运算符完全避免任何特殊情况:

def time_conversion(s):
    hh = int(s[:2]) % 12  # this is the magical part 12->0
    mmss = s[2:8]
    suffix = s[8:].strip().upper()

    if suffix == 'PM':
        hh += 12
    return f'{hh:02d}{mmss}'

推荐阅读