2012-06-12 25 views
8

Ich erlaube Benutzern, eine Stunde von 00:00:00 zu 23:00:00 zu wählen und müssen prüfen, ob sie das richtige Format einreichen. Gibt es einen regulären Ausdruck oder eine PHP-Funktion, die ein 24-Stunden-Format, z. HH:MM:SS?Php Validierung 24 Stunden Zeitformat

Ich habe einige Regex-Beispiele gefunden, aber die 24-Stunden-Zeit, die ich validiere, ist immer auf 00 für Minuten und Sekunden eingestellt. Nur die Stunde variiert.

Zum Beispiel

18:00:00, 23:00:00, 01:00:00 
+0

Benutzer können die Auswahl ändern, die sie getroffen haben? z. B. "25:00:00" oder "Banane"? – Zuul

+0

Sachleens Antwort ist, was Sie gefragt haben, aber wenn Ihr wirkliches Problem darin besteht, einem Benutzer eine Möglichkeit zu geben, eine Zahl zwischen 00 und 23 einzugeben, sollten Sie ein Dropdown-Menü verwenden. –

+0

@Zuul sicher können sie, sie wählen die Zeit aus einer Dropdown-Liste – CyberJunkie

Antwort

19

Dies alles zusammen 24-Stunden-Zeit einschließlich Sekunden

([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] 

Wenn Sie nur 00 Minuten und Sekunden wollen, dann

([01]?[0-9]|2[0-3]):00:00 
+0

Danke! Ihr Code wird vielen helfen. – CyberJunkie

+0

Ich habe vergessen zu fragen ... würden die folgenden Trennzeichen für Regex 2 korrekt sein? '/^([01]? [0-9] | 2 [0-3]): 00: 00 $ /' – CyberJunkie

+2

Das '^' bedeutet Start von String und '$' Ende von String. Mit denen, die darin sind, kann nichts die Zeit umgeben. Also ja, das wird nicht nur funktionieren, es ist das Richtige zu tun. – sachleen

2

Try This

$time="23:00:00"; 

preg_match('#^([01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$#', $time); 
+0

Funktioniert wie ein Charme! (rettete meinen Tag). –

3

Hier ist es eine endgültige Probe dort sind bereit, verwendet zu werden.

$myTime = '23:00:00'; 

$time = preg_match('#^([01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$#', $myTime); 

if ($time == 1) 
{ 
    // make a error! 
} 
else 
{ 
    // make a error! 
} 
1

Hat es eine RegEx? Sie können einfach PHPs strtotime-Funktion verwenden, um Datum und Uhrzeit zu überprüfen (funktioniert auch ohne Datum). strtotime gibt false (-1 vor PHP 5.1) zurück, wenn die angegebene Zeit nicht gültig ist. Vergessen Sie nicht, den Operanden === zu verwenden!

if (strtotime("12:13") === false) { echo("Wrong Time!"); } // Echos nothing 
if (strtotime("19:45") === false) { echo("Wrong Time!"); } // Echos nothing 
if (strtotime("17:62") === false) { echo("Wrong Time!"); } // Echos 'Wrong Time!' 
0

Das funktionierte wie ein Charme für mich.

$time = "23:59:60";  
preg_match("/^([0-1][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/", $time) 
Verwandte Themen