Sicherlich gibt es einfachere Methoden , fertige Klassen oder ähnliches, um genau ein Datum auf Korrektheit zu prüfen.
Aber für genau das Datumsformat dd.mm.yyyy HH:ii kann man diesen Algorythmus einmal verwenden.
Beispiel Datumseingaben: 31.10.2007 17:00 oder 01.01.2008 01:03
Die Datumsvariable heißt in unserem Fall $my_date und es wird auf ein exakt gültiges Datum geprüft.
Natürlich könnte man sagen, der 31.11.2007 oder gleich dem 01.12.2007, oder 25:10 ist 01:10 am Folgetag. Das wollen wir in diesem Fall aber nicht. Wir wollen ein exakt gültiges Datum.
1. Rahmendate prüfen per regulärem Ausdruck
$arr_my_date = array();
if(empty($my_date)
|| !eregi(‘([0-9]{2,2}).([0-9]{2,2}).([0-9]{4,4}) ([0-9]{2,2}):([0-9]{2,2})’, $my_date, $arr_my_date)
){ return false;}
2. unix_timestamp aus den gewonnen Daten holen
$start_timestamp = mktime($arr_start[4], $arr_start[5], 0, $arr_start[2], $arr_start[1], $arr_start[3]);
3. Das vorgegebene Datum nochmal mit dem eingegebenen Datum vergleichen (somit wird z.B. der 31.11.2007 ausgeschlossen
if(date(‘d.m.Y H:i’, $start_timestamp) != $my_date){
return false;}
Jetzt könnte man noch prüfen, ob das Datum in der Vergangenheit liegt:
if($start_timestamp < time()){
return false;}
Oder das Datum in ein für mysql benutzbares Format bringen:
$mysql_date = date(‘Y-m-d H:i:s’, $start_timestamp);
oder es in andere Formate bringen.