webForumDet fria alternativet

Problem med datumfunktion från Jojoxx

4 svar · 276 visningar · startad av anno

annoMedlem sedan nov. 2000213 inlägg
#1

Jojoxx eller någon annan kanske kan hjälpa mig med detta.

Använder nedanstående kod för att validera datum men den klagar på datum som slutar 08 och 09, t.ex 2003-06-09 är ett felaktigt datum.

function jxValidateDate(str){
	if(str.length!=10||str.lastIndexOf('-')!=7||str.indexOf('-')!=4){
		return false;
	}
	var a=new Array(); 
	a=str.split(/-/); 
	var months=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	for(var n=0;n<a.length;n++){
		for(var nn=0;nn<a[n].length;nn++){
			if("0123456789".indexOf(a[n].substring(nn,nn+1))<0){
				return false;
			}
		}
	}
	if(parseInt(a[0])%4==0&& parseInt(a[0])%100!=0||parseInt(a[0])%400==0){
		months[1]=29;
	}

	if(parseInt(a[1])>12||parseInt(a[1])==0||parseInt(a[2])>months[parseInt(a[1])-1]||parseInt(a[2])==0){
		return false;
	}
	return true;
}
JojoxxMedlem sedan juni 20004 308 inlägg
#2

Den är gammal :) Ta denna;

String.prototype.isValidDate = function(){
	if(!this.match(/^(\d{4})\-(\d{2})\-(\d{2})$/)){ return false; }
	return (RegExp.$3<=new Date(RegExp.$1,RegExp.$2,0).getDate()&&RegExp.$3>0&&RegExp.$2<13&&RegExp.$2>0);
}

if("2003-06-09".isValidDate()){
 // ok
}
annoMedlem sedan nov. 2000213 inlägg
#3

Den fungerade nästan :)
Datum efter den 28:e klagar den på.

JojoxxMedlem sedan juni 20004 308 inlägg
#4

Ursäkta, det saknades ett regexp :) Prova nu.

annoMedlem sedan nov. 2000213 inlägg
#5

Kanon, nu fungerar det fin fint.
Tack för hjälpen.

247 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
126 ms — hämta statistik (db)
119 ms — hämta tråd, inlägg och bilagor (db)