Datum mit JavaScript überprüfen

Bei gewissen Web-Formularen muss der Benutzer ein Datum eingeben und da möchte man natürlich auch sicherstellen, dass das eingegebene Datum korrekt ist. Mit JavaScript kann man dem Benutzer so recht schnell eine Rückmeldung geben, ob das eingegebene Datum auch korrekt ist oder nicht. Natürlich sollte man das Datum schlussendlich auch noch Serverseitig (PHP/ASP usw.) prüfen, da JavaScript ja schnell deaktiviert ist.
Die nachfolgende JavaScript Funktion überprüft ein Datum im Format DDMMYY auf seine Gültigkeit. Auch Schaltjahre werden so korrekt geprüft.
// die funktion erwartet das datum als string (DDMMYY)
function checkdate(value)
{
    // abbrechen wenn kein datum angegeben wurde
    if(value=="")
    {
        return false;
    }

    // regular expression fuer einen rudimentaeren check
    var reg=new RegExp("^([0-3]{1})([0-9]{1})([0-1]{1})([0-9]{1})([0-2]{1})([0-9]{1})$","g");

    // pruefen und abbrechen wenn es nicht passt
    if(!value.match(reg))
    {
        return false;
    }

    // string in tage, monate und jahre aufteilen
    var day=value.substr(0,2);
    var month=value.substr(2,2)-1;
    var year=value.substr(4,2);

     // datum erstellen
     date=new Date(year,month,day);

    // jahr ueberpruefen
    if(year!=date.getYear())
    {
        return false;
    }

    // monat ueberpruefen
    if(month!=date.getMonth())
    {
        return false;
    }

    // tag ueberpruefen
    if(day!=date.getDate())
    {
        return false;
    }

    // datum ist korrekt
    return true;
}

Datum mit Javascript überprüfen

Da ich mich gerade etwas mit JavaScript am herumschlagen bin, gibts mal wieder etwas aus dieser Ecke. Für eine kleine Applikation im Geschäft brauchte ich eine Funktion, welche überprüft, ob das Datum in einem Textfeld korrekt ist. Mit Regular Expressions geht das bis zu einem gewissen Grad, überprüfen ob das Datum aber wirklich gültig ist geht damit allerdings nicht. Stichwort Schaltjahr.

Mit dem JavaScript Objekt date kann man das Datum aber sehr genau überprüfen. Die folgende Funktion überprüft, ob das Datum im Textfeld das Format ddmmyy hat und ob es gültig ist.
Aufrufen kann man die Funktion zum Beispiel so:
<input type="text" name="datum" onBlur="checkdate(this)" />

Und hier die Funktion.
function checkdate(object)
{
    // wert auslesen
    value=object.value;

    // regexp zur grobpruefung des datums
    var reg=new RegExp("^([0-3]{1})([0-9]{1})([0-1]{1})([0-9]{1})([0-2]{1})([0-9]{1})$","g");

    // wenn das regexp nicht matcht 
    if(!value.match(reg))
    {
        return false;
    }
    
    // datum in tag, monat und jahr zerlegen
    var day=value.substr(0,2);
    var month=value.substr(2,2)-1;
    var year=value.substr(4,2);

    // datums objekt erstellen
    date=new Date(year,month,day);

    // jahr ueberprufen
    if(year!=date.getYear())
    {
        return false;
    }

    // monat ueberpruefen
    if(month!=date.getMonth())
    {
        return false;
    }

    // tag ueberpruefen
    if(day!=date.getDate())
    {
        return false;
    }

    return true;
}