Datumsformat überprüfen

BettyNetty

Mitglied
Hallo,

hat jemand eine Ahnung, ob es schon Funktionen oder Programmcode gibt um folgendes, vom Benutzer eingegebenes,Datumsformat zu überprüfen: 12.12.2005.
Evt. regulärer Ausdruck?
 
Wenn du einen regulären Ausdruck für ein korrektes deutsches (TT.MM.JJJJ) Datum suchst, stellt sich erstmal die Frage nach der Genauigkeit:
Reicht ein Regex nach dem Format /^[0-9]{2}.[0-9]{2}.[0-9]{4}$/, oder soll es die 99,999999% sichere Variante mit Schaltjahr, keinem 31.April etc. sein?
Wenn du letztere Variante für nötig hälst, schau mal beim Regex-Tutorial auf http://www.regenechsen vorbei: LINK

Ceppi
 
Wenn man die gesamte Datumsüberprüfung nur mittels regulärer Ausdrücke erledigen will, macht man sich das Leben unnötig schwer. Einfacher ist es, lediglich das Format mit [phpf]preg_match[/phpf] zu überprüfen und den Rest [phpf]checkdate[/phpf] zu überlassen.

Beispiel:
PHP:
<?php

function valiDate($date)
{
	if (!preg_match('/^(\d{2})\.(\d{2})\.(\d{4})$/', trim($date), $matches)) {
		return false;
	}
	return checkdate($matches[2], $matches[1], $matches[3]);

}


if (!valiDate('12.12.2005')) {
	echo 'Ungültiges Datum!';
}

?>

Wer das Wortspiel im Funktionsnamen entdeckt, darf es behalten :)
 
@ Matthias Reitinger
checkdate() testet aber nur Daten ab 1970, oder?

Also was wäre wenn man ein Datum vor 1970 auf Gültigkeit testen möchte (z.Bsp. Gebursdatum)?
 
heikomi hat gesagt.:
@ Matthias Reitinger
checkdate() testet aber nur Daten ab 1970, oder?

Also was wäre wenn man ein Datum vor 1970 auf Gültigkeit testen möchte (z.Bsp. Gebursdatum)?

Hallo,
nein das ist nicht so, auf php.net steht nämlich folgendes:
php.net hat gesagt.:
Ein Datum wird als gültig angesehen, wenn


  • das Jahr zwischen 1 und 32767 (inklusive) ist,
  • der Monat zwischen 1 und 12 (inklusive) ist und
  • der Tag innerhalb der erlaubten Werte des angegebenen Monats ist. SchaltJahre werden berücksichtigt.
mfg
forsterm
 
Moin Moin,

ich versuche mich gerade in die Welt des preg_match etc. einzuarbeiten. Habe mir dazu auch schon http://www.tutorials.de/forum/php-t...ere-ausdruecke-regular-expressions-regex.html angeguckt.


In dem oben stehenden Code steht jetzt "\d{2})".
(Vorweg: da ist auch noch ein kleiner Fehler. Als Übergabeparameter wurde $date und in der Function $datum verwendet). Mal abgesehen davon dass die Function mein Problem löst... was bedeutet dieses \d? Habe dazu in dem Tutorial nichts gefunden. Oder ich bin blind. :)

Vielen Dank
MfG
droni
 
Das \d steht für eine arabische Zahl (0-9). Diese kann sowohl alleine als auch in Verbindung mit einer Zeichenklasse benutzt werden.

PS: Ich habe mal Matthias’ Beitrag korrigiert.
 
Zurück