2017-03-15 14 views
0

軍事Pyschools時間変換

だから、私はこの演習に問題があり、定期的な時間への変換は、私は時間を変換し、午前と、午後にAMとPMをしなければなりません

ミリタリーから正規のフォーマットに時間を変換する関数を記述します。 例:

>>> time12hr('1619') 
    '4:19 p.m.' 
>>> time12hr('1200') 
    '12:00 p.m.' 
>>> time12hr('1020') 
    '10:20 a.m.' 

最初の試み:良いのですが、pyschoolsは、午後であることをPMが必要です00 PM」:

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を返します。またはAMを午前11時01分に返す必要があります。

2回目の試行:私は私のコードで間違ってやっている何

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. 

答えて

1

だから私はそれを解決しました。 これは正解です。

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.' 
)