# Datumsformat überprüfen



## BettyNetty (18. Januar 2006)

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?


----------



## dillen (18. Januar 2006)

Auf was genau hin willst du das Datum denn prüfen?


----------



## Ceppi (18. Januar 2006)

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


----------



## BettyNetty (18. Januar 2006)

sollte eine möglichst genaue Variante sein!


----------



## Matthias Reitinger (18. Januar 2006)

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

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


----------



## heikomi (18. Januar 2006)

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


----------



## Matthias Reitinger (18. Januar 2006)

In dem Fall würde ich mal in das PHP-Manual schauen


----------



## forsterm (18. Januar 2006)

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


mfg
forsterm


----------



## droni (9. April 2006)

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


----------



## Gumbo (9. April 2006)

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.


----------

