Python 时间转换
军事到常规时间转换 所以,我在这个练习中遇到了一个问题,我必须把时间转换成上午和下午,转换成上午和下午 编写一个函数,将时间从军用格式转换为常规格式。 示例:Python 时间转换,python,python-2.7,time,Python,Python 2.7,Time,军事到常规时间转换 所以,我在这个练习中遇到了一个问题,我必须把时间转换成上午和下午,转换成上午和下午 编写一个函数,将时间从军用格式转换为常规格式。 示例: >>> time12hr('1619') '4:19 p.m.' >>> time12hr('1200') '12:00 p.m.' >>> time12hr('1020') '10:20 a.m.' 第一次尝试: from datetime import d
>>> time12hr('1619')
'4:19 p.m.'
>>> time12hr('1200')
'12:00 p.m.'
>>> time12hr('1020')
'10:20 a.m.'
第一次尝试:
from datetime import datetime
def time12hr(the_time):
hour = the_time[0:2]
d = datetime.strptime(the_time, "%H%M")
s = d.strftime("%I:%M %p")
return s
Test Cases Expected Result Returned Result
time12hr('1202') 12:02 p.m. 12:02 PM
time12hr('1200') 12:00 p.m. 12:00 PM
time12hr('0059') 12:59 a.m. 12:59 AM
time12hr('1301') 1:01 p.m. 01:01 PM
time12hr('0000') 12:00 a.m. 12:00 AM
这将返回“12:00 PM”,这很好,但pyschools要求下午为下午或上午至上午,13:01应返回1:01而不是01:01
第二次尝试:
from datetime import datetime
def time12hr(input):
hours, minutes = int(input[0:2]), int(input[2:4])
if hours > 12:
afternoon = True
hours -= 12
else:
afternoon = False
if hours == 0:
# Special case
hours = 12
return '{hours}:{minutes:02d} {postfix}'.format(
hours=hours,
minutes=minutes,
postfix='p.m.' if afternoon else 'a.m.'
)
Test Cases Expected Result Returned Result
time12hr('1202') 12:02 p.m. 12:02 a.m. - this is not good
time12hr('1200') 12:00 p.m. 12:00 a.m. - this is not good
time12hr('0059') 12:59 a.m. 12:59 a.m.
time12hr('1301') 1:01 p.m. 1:01 p.m.
time12hr('0000') 12:00 a.m. 12:00 a.m.
我在代码中做错了什么?好的,所以我解决了它。
这是正确的答案:
from datetime import datetime
def time12hr(input):
hours, minutes = int(input[0:2]), int(input[2:4])
if hours >= 12:
afternoon = True
hours -= 12
else:
afternoon = False
if hours == 0:
hours = 12
return '{hours}:{minutes:02d} {postfix}'.format(
hours=hours,
minutes=minutes,
postfix='p.m.' if afternoon else 'a.m.'
)