你可以使用 datetime 模块,但是你也必须处理日期(你可以在那里插入你想要的任何东西)。可能更容易简单地解析它。
更新:正如@JonClements 在对原始问题的评论中指出的那样,它可以用一个衬里来完成:
from datetime import datetime
def convertTime(s):
print datetime.strptime(s, '%H%M').strftime('%I:%M%p').lower()
您可以通过以下方式将输入字符串拆分为小时和分钟部分:
hours = input[0:2]
minutes = input[2:4]
然后解析这些值以获得一个整数:
hours = int(hours)
minutes = int(minutes)
或者,以更 Pythonic 的方式进行操作:
hours, minutes = int(input[0:2]), int(input[2:4])
然后你必须决定时间是在早上(hours
0 点到 11 点之间)还是下午(hours
12 点到 23 点之间)。还要记住处理特殊情况hours==0
:
if hours > 12:
afternoon = True
hours -= 12
else:
afternoon = False
if hours == 0:
# Special case
hours = 12
现在你得到了你需要的一切,剩下的就是格式化和打印结果:
print '{hours}:{minutes:02d}{postfix}'.format(
hours=hours,
minutes=minutes,
postfix='pm' if afternoon else 'am'
)
将其包装在一个函数中,采用一些快捷方式,您将得到以下结果:
def convertTime(input):
h, m = int(input[0:2]), int(input[2:4])
postfix = 'am'
if h > 12:
postfix = 'pm'
h -= 12
print '{}:{:02d}{}'.format(h or 12, m, postfix)
convertTime('0000')
convertTime('1337')
convertTime('0429')
convertTime('2359')
convertTime('1111')
结果是:
12:00am
1:37pm
4:29am
11:59pm
11:11am