IsDate liefert sowohl bei 30.11.2001,
als auch bei 11.30.2000 True (wendet dann einfach
Amerikanisches Format an).
Ich glaube, die IsDate() Funktion musst Du ein bischen anders betrachten:
Die IsDate() Funktion stellt sich die Frage: „Kann die Funktion CDate() den String ‚11.30.2000‘ in einen gültigen Datentyp Date umwandeln?!“ … und geht dabei wie folgt vor:
- ich sehe 2000 … das kann nur das Jahr sein
- ich sehe 30 … das kann nur der Tag sein, weil das Jahr nur 12 Monate hat und ich das Jahr, nämlich 2000, schon gefunden habe. Daher kann auch nicht 1930 damit gemeint sein.
- ich sehe 11 … nachdem der Tag und das Jahr schon vergeben ist, muss damit zwangsläufig der Monat damit gemeint sein.
-Alle Werte sind Gültig … ich liefere True
Ich habe in der Ländereinstellung ‚dd.mm.yyyy‘ eingestellt und bekomme mit der Funktion CDate(„11.30.2000“) den 30. Nov. 2000, was ja vollkommen richtig ist!!!
Das Eingabe-Format spielt daher in diesem Falle keine Rolle, weil die Konvertierung ja eh richtig funktioniert!!! Interessant wird es bei z.B.: ‚05.06.2000‘
Meine ich jetzt den „5. Juni 2000“ oder „06. Mai 2000“?!?!
Vor allem … wie willst Du bei ‚05.06.2000‘ das Eingabe-Format prüfen … ob der Tag und das Monat an der richtigen Stelle stehen?!? (Hier zieht bei CDate() übrigens die Ländereinstellung!!!)
—> Die Prüfung, ob das Eingabe-Format stimmt, ist daher zwecklos, da Du nicht 100%tig prüfen kannst. Der Benutzer muss daher wissen, in welchem Format er das Datum einzugeben hat.
greets from michL (vienna)