将字符串转换为12小时格式

时间:2017-09-10 21:11:26

标签: python python-2.7

我的代码片段需要一些帮助。我的字符串范围是0到24。

如果我有显示13的字符串,我想将其转换为12小时,以使字符串显示1而不是13

for program_end_time in self.program_end_time:
    program_stop_hours = str(program_end_time.hour)

    #Now I would like to convert it to 12 hours instead of 24

我想将24小时转换为12小时的原因是因为我想减少代码而不是:

 if program_stop_hours == "0":
     program_stop_hours = "12"
     program_AM_PM = 'AM'
 elif program_stop_hours == "1":
     program_stop_hours = "1"
     program_AM_PM = 'AM'
 elif program_stop_hours == "2":
     program_stop_hours = "2"
     program_AM_PM = 'AM'
 elif program_stop_hours == "3":
     program_stop_hours = "3"
     program_AM_PM = 'AM'
 elif program_stop_hours == "4":
     program_stop_hours = "4"
     program_AM_PM = 'AM'
 elif program_stop_hours == "5":
     program_stop_hours = "5"
     program_AM_PM = 'AM'
 elif program_stop_hours == "6":
     program_stop_hours = "6"
     program_AM_PM = 'AM'
 elif program_stop_hours == "7":
     program_stop_hours = "7"
     program_AM_PM = 'AM'
 elif program_stop_hours == "8":
     program_stop_hours = "8"
     program_AM_PM = 'AM'
 elif program_stop_hours == "9":
     program_stop_hours = "9"
     program_AM_PM = 'AM'
 elif program_stop_hours == "10":
     program_stop_hours = "10"
     program_AM_PM = 'AM'
 elif program_stop_hours == "11":
     program_stop_hours = "11"
     program_AM_PM = 'AM'
 elif program_stop_hours == "12":
     program_stop_hours = "12"
     program_AM_PM = 'PM'
 elif program_stop_hours == "13":
     program_stop_hours = "1"
     program_AM_PM = 'PM'
 elif program_stop_hours == "14":
     program_stop_hours = "2"
     program_AM_PM = 'PM'
 elif program_stop_hours == "15":
     program_stop_hours = "3"
     program_AM_PM = 'PM'
 elif program_stop_hours == "16":
     program_stop_hours = "4"
     program_AM_PM = 'PM'
 elif program_stop_hours == "17":
     program_stop_hours = "5"
     program_AM_PM = 'PM'
 elif program_stop_hours == "18":
     program_stop_hours = "6"
     program_AM_PM = 'PM'
 elif program_stop_hours == "19":
     program_stop_hours = "7"
     program_AM_PM = 'PM'
 elif program_stop_hours == "20":
     program_stop_hours = "8"
     program_AM_PM = 'PM'
 elif program_stop_hours == "21":
     program_stop_hours = "9"
     program_AM_PM = 'PM'
 elif program_stop_hours == "22":
     program_stop_hours = "10"
     program_AM_PM = 'PM'
 elif program_stop_hours == "23":
     program_stop_hours = "11"
     program_AM_PM = 'PM'

我想让它像这样显示:

if program_stop_hours >= 0 and if program_stop_hours <= 12:
   program_stop_hours = str(program_stop_hours, convert_to_12_hours)
   program_AM_PM = 'AM'
else:
   program_stop_hours = str(program_stop_hours, convert_to_12_hours)
   program_AM_PM = 'PM'

你能告诉我一个如何在python中做到这一点的例子吗?

2 个答案:

答案 0 :(得分:3)

你真的只需要测试两种情况:program_stop_hours小于或等于12或者大于12.您可以这样做:

program_stop_hours = input("Enter program stop hours: ")
if program_stop_hours >= 0 and program_stop_hours <= 12:
    program_stop_hours = str(program_stop_hours)
    program_AM_PM = 'AM'
else:
    program_stop_hours = str(program_stop_hours - 12)
    program_AM_PM = 'PM'

print program_stop_hours
print program_AM_PM

确保正确处理各种条件,例如program_stop_hours:小于零;正好12(确保它在那种情况下做你想要的);超过24(你不测试);并且恰好是24(以确保它按照您的意图处理该情况)。

答案 1 :(得分:0)

这样做,你将需要修改它以适应你的formattig需要,但它很短

>>> def convert24(x):
    am = "AM" if x < 12 else "PM"
    r = 12 if not x%12 else x%12
    return "{:0>2d}:00 {}".format(r, am)

>>> convert24(0)
'12:00 AM'
>>> convert24(13)
'01:00 PM'
>>> convert24(23)
'11:00 PM'
相关问题