2015-07-29 2 views
1

Как бы я пошел по этому процессу? Предположим, что кто-то вводит «3: 5», и я должен получить выход «3:05 AM». Или, если кто-то вводит «00:00», я должен получить «12:00 AM». Я понимаю множество способов сделать это, если формат времени просто вводится как «hhmm», но вход может варьироваться от «h: m», «hh: m», «hh: m» и «hh: мм». Так что это очень ситуативно.0-23 часовых часов до стандартного времени (чч: мм)

def timeConvert(): 
    miliTime = int(input("Enter a time in hh:mm (military) format: ")) 
    miliTime.split(":") 
    if len(miliTime) == 3: 
     hours = miliTime[0] 
     minutes = miliTime[2] 
     if hours < 0: 
      print("Hours can't be less than 0.") 
    elif len(miliTime) == 4: 
     if miliTime[0:2] >= 10: 
      hours = militime[0:2] 
      minutes = militime[3] 
      if minutes < 0: 
       print("Minutes can't be less than 0.") 
      if minutes < 10: 
       minutes = 0 + minutes 
     else: 
      hours = miliTime[0] 
      minutes = militime[2:] 
      if minutes >= 60: 
       print("Too big of a number for minutes.") 
    else: 
     hours = miliTime[0:2] 
     minutes = miliTime[3:] 
    setting = AM 
    if hours > 12: 
     setting = PM 
     hours -= 12 
    print(hours + ":" + minutes + setting) 

timeConvert() 

ответ

0

Разделить вход по :, и использовать форматированный вывод в конце:

def timeConvert(): 
    miliTime = input("Enter a time in hh:mm (military) format: ") 
    hours, minutes = miliTime.split(":") 
    hours, minutes = int(hours), int(minutes) 
    setting = "AM" 
    if hours > 12: 
     setting = "PM" 
     hours -= 12 
    print(("%02d:%02d" + setting) % (hours, minutes)) 
+0

Примечание для OP: когда ввод '' 00:00 "', выход '' 00:00 AM "' (не '' 12:00 AM "'), это правильно, не так ли? Если это не так, то изменить его относительно легко. –

4

Используйте модуль DateTime-х strptime() читать строку как объект даты и времени, а затем преобразовать его обратно в строку, используя strftime() , пример -

>>> datetime.datetime.strptime('3:5','%H:%M').strftime('%I:%M %p') 
'03:05 AM' 
>>> datetime.datetime.strptime('18:30','%H:%M').strftime('%I:%M %p') 
'06:30 PM' 
>>> datetime.datetime.strptime('00:00','%H:%M').strftime('%I:%M %p') 
'12:00 AM' 

форматы объяснены -

% Н - час (24-часовой fomrat)

% М - минуту

% I - час (12-часовой формат)

% р - AM или РМ


Функция будет выглядеть -

def timeConvert(): 
    import datetime 
    ds = input("Enter a time in hh:mm (military) format: ") 
    newds = datetime.datetime.strptime(ds, ,'%H:%M').strftime('%I:%M %p') 
    print(newds) 
Смежные вопросы