2009-08-24 5 views
6

En python, je veux vérifier si la chaîne d'entrée est en "HH: MM" comme 01:16 ou 23:16 ou 24:00. Donner vrai ou faux par le résultat.Vérification du format de l'heure python

Comment puis-je y parvenir en utilisant une expression régulière?

+0

Voulez-vous « deux chiffres, deux points, deux chiffres » ou voulez-vous vérifier si elle est en fait une valeur de temps légal? – balpha

+0

Strictement parlant '24: 00 'n'est pas une chaîne' HH: MM 'valide. '00: 00' à '23: 59 'sont. –

+0

Midnight est un cas particulier et peut être appelé "00:00" et "24:00". La notation "00:00" est utilisée au début d'un jour calendaire et est la plus fréquemment utilisée. [ISO 8601] (http://en.wikipedia.org/wiki/ISO_8601) –

Répondre

18

Vous pouvez y parvenir sans expressions régulières:

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 qui était vraiment très utile; Merci! – jambox

1

Cela vous donnera l'objet regexp qui le vérifier. Cependant, en fonction de qui vous demandez 24:00 pourrait ne pas être une heure valide (il est 00:00). Mais je suppose que c'est facile à modifier pour répondre à vos besoins.

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

Matchs tout de 00:00 à 24:00.

Questions connexes