这里是将12小时时间格式转换为24小时格式的代码。除了12小时时间AM(1:00:00到11:59:59)很奇怪,只返回0之外,一切都很正常。
代码是 。
def timeConversion(s):
times = s.split(":")
hour = int(times[0])
minutes = times[1]
seconds = times[2][:-2]
timemod = times[-1][2:]
military_hour=0
if timemod=="AM" :
if hour == 12 :
miltary_hour = 0
else:
miltary_hour = hour
elif timemod == "PM" :
if hour == 12 :
military_hour = hour
else:
military_hour = hour + 12
if military_hour < 10 :
military_hour = "0" + str(military_hour)
else:
military_hour = str(military_hour)
return ":".join([military_hour,minutes,seconds])
## below 2 are incorrect
print(timeConversion("9:30:10AM"))
print(timeConversion("6:00:00AM"))
## these are correct
print(timeConversion("12:00:00AM"))
print(timeConversion("12:00:00PM"))
print(timeConversion("11:59:59PM"))
解决方案是
00:30:10
00:00:00
00:00:00
12:00:00
23:59:59
为什么AM时间在中午之前总是返回00而不是实际的小时?
你拼错了 military_hour
在 AM
逻辑。
在这里,你可以试试这样:
if timemod=="AM" :
if hour == 12 :
miltary_hour = 0
else:
miltary_hour = hour
你可以试试这个
time_12 = input().strip()
time_in_pm = time_12[-2:].lower() == 'pm'
time_list = list(map(int, time_12[:-2].split(':')))
if not time_in_pm and time_list[0] == 12:
time_list[0] = 0
if time_in_pm and time_list[0] < 12:
time_list[0] += 12
print(':'.join(map(lambda x: str(x).rjust(2, '0'), time_list)))
或者你也可以用python的日期时间库。