Die hier müsste relativ gut sein, hoffe es sind keine Fehler drin, kann mm/dd/yyyy und dd.mm.yyyy. Akzeptiert sowohl 2 als auch 4 stelliges Jahr
--------------------------------------
function validateDate(date) {
if (date == "") return true;
if (date.length<8 || date.length>10 || ((date.indexOf(".")== -1) && (date.indexOf("/") == -1))) {
return false;
}
var teile=new Array();
// falls / im date dann dort teilen und vertauschen, sonst . und normal
if (date.indexOf("/") > -1) {
teile=date.split("/");
if (teile.length!=3) {
return false;
}
var tmp = teile[0];
teile[0] = teile[1];
teile[1] = tmp;
} else {
teile=date.split(".");
if (teile.length!=3) {
return false ;
}
}
if (isNaN(teile[0])==true || isNaN(teile[1])==true || isNaN(teile[2])==true || teile[0]<1 || teile[0]>31 || teile[1]<1 || teile[1]>12 || teile[2]<1950 || teile[2]>9999 )
{
return false;
}
/* Nur 02, 04, 06, 09 und 11 haben weniger als 31 Tage! */
if (teile[0]=="31") {
if (teile[1]=="2" || teile[1]=="4" || teile[1]=="6" || teile[1]=="9" || teile[1]=="11" || teile[1]=="02" || teile[1]=="04" || teile[1]=="06" || teile[1]=="09") {
return false;
}
}
if (teile[0]=="30" && teile[1]=="2") {
return false;
}
if (teile[0]=="30" && teile[1]=="02") {
return false;
}
/* Die boesen Schaltjahre... */
if (teile[0]=="29" && teile[1]=="2") {
var schaltklein=teile[2]%4;
if (schaltklein!=0) {
return false;
} else {
var schaltmittel=teile[2]%100;
if (schaltmittel==0) {
var schaltgross=teile[2]%400;
if (schaltgross!=0) {
return false;
}
}
}
}
if (teile[0]=="29" && teile[1]=="02") {
var schaltklein=teile[2]%4;
if (schaltklein!=0) {
return false;
} else {
var schaltmittel=teile[2]%100;
if (schaltmittel==0) {
var schaltgross=teile[2]%400;
if (schaltgross!=0) {
return false;
}
}
}
}
return true;
}