PETIT SCRIPT MAIS EFFICACE POUR VALIDER LES DATES

stfou Messages postés 450 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 18 avril 2007 - 12 avril 2007 à 20:27
amrounix Messages postés 78 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 12 juillet 2010 - 26 avril 2008 à 10:37
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/42184-petit-script-mais-efficace-pour-valider-les-dates

amrounix Messages postés 78 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 12 juillet 2010
26 avril 2008 à 10:37
essaye ca :

function testTypeDate(dateEntree)
{
tst=false;
try
{rc=dateEntree.split("/");nd=new Date(rc[2],(rc[1]-1),rc[0]);
tst=(rc[2]>1800&&rc[2]<2200&&rc[2]==nd.getFullYear()&&rc[1]==(nd.getMonth()+1)&&rc[0]==nd.getDate());
} catch(e) {}
return tst;
}

avec comme paramètre dateEntree = "JJ/MM/AAAA"
tu me dira ce que tu en pense ;-)
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
13 avril 2007 à 08:33
je ne pensais pas qu'il était possible de contrôler totalement une
date avec une expression régulière ( années bissextiles et le reste )
pas testé complètement, mais impressionnant. @+
stfou Messages postés 450 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 18 avril 2007 3
12 avril 2007 à 20:27
Tu pourrai aussi intégrer directement a ta fonction l'action de vérifier la présence d'un argument (pas null,unedefined,false,"") et l'ajouté en tant que propriété de String :
String.prototype.isValidDate=function(d) {
if(d){
var dateRegEx = /^((((0?[1-9]|[12]\d|3[01])[\.\-\/](0?[13578]|1[02])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\.\-\/](0?[13456789]|1[012])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|(29[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$/;
return d.match(dateRegEx);}else{return false;}
}


Ainsi tu as juste à faire : if(madate.isValidDate) alert("valide"); else alert("invalide");
Rejoignez-nous