2009-08-24 15 views
6

En python, quiero verificar si la cadena de entrada está en "HH: MM" como 01:16 o 23:16 o 24:00. Dando verdadero o falso por el resultado.verificación de formato de hora python

¿Cómo puedo lograr esto usando la expresión regular?

+0

¿Quieres "dos dígitos, dos puntos, dos dígitos" o quiere comprobar si en realidad es un valor de tiempo legal? – balpha

+0

Estrictamente hablando '24: 00 'no es una cadena' HH: MM 'válida. '00: 00 'a '23: 59' son. –

+0

La medianoche es un caso especial y puede denominarse tanto "00:00" como "24:00". La notación "00:00" se usa al comienzo de un día calendario y es la más utilizada. [ISO 8601] (http://en.wikipedia.org/wiki/ISO_8601) –

Respuesta

18

Usted puede lograr esto sin expresiones regulares:

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

wow que fue realmente muy útil; ¡Gracias! – jambox

1

esto le dará el objeto de expresiones regulares que comprobarlo. Sin embargo, dependiendo de a quién le preguntes las 24:00 podría no ser una hora válida (son las 00:00). Pero supongo que esto es fácil de modificar para satisfacer sus necesidades.

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

Partidos de todo, desde las 00:00 hasta las 24:00.

Cuestiones relacionadas