Datetime Helferlein
Die folgenden beiden Funktionen habe ich mir mal gebaut, um ein Datum, welches mit Select-Boxen zusammen geklickt wird, in einen Datetime String (YYY-MM-DD HH:MM:SS) zu konvertieren.
Datetime-String zusammensetzen
Die Funktion makeDatetime() nimmt die einzelnen Werte der Select Boxen und setzt sie zu einem Datetime String zusammen. Dabei werden Zahlen die nur aus einem Zeichen bestehen mit führenden Nullen korrigiert.
Sind alle Werte korrekt, wird der Datetime String zusammen gebaut. Optionale Werte, wie zum Beispiel Stunde und Minute, werden automatisch durch Nullen ersetzt, wenn diese nicht angegeben sind.
Zum Schluss wird noch mit der Funktion checkDateTime() geprüft, ob auch ein gültiges Datum rausgekommen ist. Sollte etwas schief gegangen sein, wird false, ansonsten der Datetime String zurück gegeben.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | /** * Generiert aus den Uebergabewerten eine Datetime Value * @param int Tag * @param int Monat * @param int Jahr * @param int Stunde (24std Format) * @param int Minute * @param int Sekunde * @return string Datetime * @return boolean false bei Fehlern */ function makeDatetime($day, $month, $year, $hour="", $minute="", $secound="") { $datetime=""; if(strlen((string)$day)==1) $day = "0".(string)$day; if(strlen((string)$month)==1) $month = "0".(string)$month; if(strlen((string)$hour)==1) $hour = "0".(string)$hour; if(strlen((string)$minute)==1) $minute = "0".(string)$minute; if(strlen((string)$secound)==1) $secound = "0".(string)$secound; if(!empty($year)) $datetime.=$year; else { $datetime.="0000"; } if(!empty($month)) $datetime.="-".$month; else { $datetime.="-00"; } if(!empty($day)) $datetime.="-".$day; else { $datetime.="-00"; } if(!empty($hour)) $datetime.=" ".$hour; else { $datetime.=" 00"; } if(!empty($minute)) $datetime.=":".$minute; else { $datetime.=":00"; } if(!empty($secound)) $datetime.=":".$secound; else { $datetime.=":00"; } if(checkDateTime($datetime) || $datetime=="0000-00-00 00:00:00") { return $datetime; } else { return false; } } |
Syntax prüfen
Die Funktion checkDateTime() überprüft zu einen die Syntax des Datetime Strings, aber auch auch, ob es sich um ein gültiges Datum handelt.
So können auch Daten wie der 29.2.2009 oder 31.11.2009 abgefangen werden.
| 1 2 3 4 5 6 7 8 9 10 11 | /** * Checkt datetime auf seine Gueltigkeit * @return boolean */ function checkDateTime($datetime) { return preg_match('/(\d{4})-(\d{2})-(\d{2}) (?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d/', $datetime, $m) && checkdate($m[2], $m[3], $m[1]); } |




