IsDate Ersatz?

Moinsen!
Bin auf der Suche nach einer Funktion,
die korrekte Ergebnisse (evtl. in Abhängigkeit zum
eingestellten Datumsformat) liefert.

IsDate liefert sowohl bei 30.11.2001,
als auch bei 11.30.2000 True (wendet dann einfach Amerikanisches Format an).
Die Funktion frisst so ziemlich alles…

THX
Jones

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)