2009-08-24 3 views
6

На python я хочу проверить, находится ли входная строка в «HH: MM», например 01:16 или 23:16 или 24:00. Давать истину или ложь по результату.проверка формата времени python

Как добиться этого, используя регулярное выражение?

+0

Вы хотите «две цифры, двоеточие, две цифры» или вы хотите, чтобы проверить, если это на самом деле юридическое значение времени? – balpha

+0

Строго говоря, '24: 00 'не является допустимой строкой «HH: MM». '00: 00 '- '23: 59'. –

+0

Midnight - специальный случай и может называться как «00:00», так и «24:00». Обозначение «00:00» используется в начале календарного дня и чаще используется. [ISO 8601] (http://en.wikipedia.org/wiki/ISO_8601) –

ответ

18

Вы можете достичь этого без регулярных выражений:

import time 

def isTimeFormat(input): 
    try: 
     time.strptime(input, '%H:%M') 
     return True 
    except ValueError: 
     return False 

>>>isTimeFormat('12:12') 
True 

>>>isTimeFormat('012:12') 
False 
+0

Вау, который был действительно очень полезным; благодаря! – jambox

1

Это даст вам объект регулярного выражения, который будет проверять его. Однако, в зависимости от того, кто вы просите 24:00, может не быть действительного времени (это 00:00). Но я думаю, это легко изменить в соответствии с вашими потребностями.

import re 
regexp = re.compile("(24:00|2[0-3]:[0-5][0-9]|[0-1][0-9]:[0-5][0-9])") 
3
import re 

time_re = re.compile(r'^(([01]\d|2[0-3]):([0-5]\d)|24:00)$') 
def is_time_format(s): 
    return bool(time_re.match(s)) 

Матчи все с 00:00 до 24:00.

Смежные вопросы