2009-08-24 15 views
6

W python, chcę sprawdzić, czy ciąg wejściowy jest w "HH: MM", takich jak 01:16 lub 23:16 lub 24:00. Nadanie wyniku prawdziwego lub fałszywego.Sprawdzanie formatu czasu Pythona

Jak mogę to osiągnąć, używając wyrażenia regularnego?

+0

Chcesz „dwie cyfry, okrężnicy, dwie cyfry” czy chcesz, aby sprawdzić, czy to faktycznie prawny wartość czasu? – balpha

+0

Ściśle mówiąc "24: 00" nie jest prawidłowym ciągiem "HH: MM". Od "00: 00" do "23: 59". –

+0

Północ to specjalny przypadek, który można określić jako "00:00" i "24:00". Notacja "00:00" jest używana na początku dnia kalendarzowego i jest częściej używana. [ISO 8601] (http://en.wikipedia.org/wiki/ISO_8601) –

Odpowiedz

18

Można to osiągnąć bez wyrażeń regularnych:

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, który był naprawdę bardzo pomocny; dzięki! – jambox

1

To daje obiektu RegExp, która będzie sprawdzać. Jednak w zależności od tego, o kogo pytasz 24:00, może nie być prawidłowego czasu (jest 00:00). Ale myślę, że to jest łatwe do modyfikacji, aby pasowało do twoich potrzeb.

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

zestawienia wszystko, od 00:00 do 24:00.

Powiązane problemy