TESTER SI UNE DATE EST VALIDE

traversbourquin Messages postés 16 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 26 novembre 2004 - 14 juil. 2004 à 03:01
ogre31 Messages postés 3 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 17 mai 2012 - 17 mai 2012 à 23:38
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/24499-tester-si-une-date-est-valide

ogre31 Messages postés 3 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 17 mai 2012
17 mai 2012 à 23:38
bonsoir
une année bissextile faut q'elle soit divisible par 4 multiple de 100 et non multiple de 1000 ( ex l'an 2000 )
BEYEMoukhtar Messages postés 1 Date d'inscription samedi 20 février 2010 Statut Membre Dernière intervention 20 février 2010
20 févr. 2010 à 17:28
Je cherche une fonction java script permettant de vérifier la validation formulaire en respectant les règles ci dessous:
-Le nom et le prénom ne peuvent être ni vide ni contenir de chiffres.
-Pour le sexe il faut choisir M ou F.
-Vérifier que la date de naissance est une date valide l'age étant inférieur ou égal a 30 et supérieur ou égal a 18.
-Le Téléphone doit contenir 9 chiffres
-Ensuite il faut choisir entre portable et fixe.
a-Si c'est portable qui a été choisi alors le numéro de téléphone doit commencer par 70 ou 76 ou 77.
b-Si c'est fixe qui a été choisi alors le numéro de téléphone doit commencer par 30 ou 33.
-L'adresse ne doit pas être vide
-Pour les cours (français,anglais,maths,économie,gestion,comptabilité,droit et histoire géographie)au moins un doit être choisi.
Après la validation du formulaire si tous les champs ont été bien remplis vous affichez un message en gras et en vert a la place de résultat de la validation.
Ex: la validation est correcte.
Sinon vous affichez l'ensemble des champs qui n'ont pas bien été remplis en rouge.
Ex: les champs suivants n'ont pas bien été remplis
Nom
Date de Naissance
Cours
BatMen63 Messages postés 1 Date d'inscription mercredi 13 février 2008 Statut Membre Dernière intervention 14 octobre 2009
14 oct. 2009 à 15:39
Bravo, traversbourquin, code super optimisé.
Il manque juste un test essentiel : vérifier que dd, mm, et aa soient des nombres..."jj/mm/yyyy" passe tranquille :)
cs_dammak Messages postés 61 Date d'inscription samedi 16 octobre 2004 Statut Membre Dernière intervention 25 novembre 2007
4 déc. 2005 à 12:51
autre demande
voila je cherche un programme en java qui transforme une tableau de valeurs en courbe 2D,3D et en histogramme
cs_dammak Messages postés 61 Date d'inscription samedi 16 octobre 2004 Statut Membre Dernière intervention 25 novembre 2007
4 déc. 2005 à 12:46
je cherche le teste de validation d'un formulaire d'insccription avec jsp ou java script
les champs son les suivants
nom/prénom/adresse/tel/mail/pseudo/login/date naissance/et il ya des champs obligatoire et des autre non
j'attend au moin un exemple et merci.
DIABLO
cs_dammak Messages postés 61 Date d'inscription samedi 16 octobre 2004 Statut Membre Dernière intervention 25 novembre 2007
4 déc. 2005 à 12:42
je cherche le teste de validation d'un formulaire d'insccription avec jsp ou java script
les champs son les suivants
nom/prénom/adresse/tel/mail/pseudo/login/date naissance/et il ya des champs obligatoire et des autre non
j'attend au moin un exemple et merci.
DIABLO
Toniolol Messages postés 21 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 25 juillet 2005
9 mars 2005 à 08:47
J'ai lu vos codes et voici le mien :
(bien entendu on récupère intAnnee, intMois, intJour où on veut....)

//on déclare la date de naissance
var DateControle = new Date();
DateControle.setYear(intAnnee);
DateControle.setMonth(intMois-1);
DateControle.setDate(intJour);
//et on controle qu'elle existe
if (intJour!=DateControle.getDate() || intMois!=DateControle.getMonth()+1 || intAnnee!=DateControle.getFullYear())
{
alert("Ce jour n'a jamais existé !");
}
else....

petite explication au cas où :
je stocke la date entrée par l'utilisateur dans une date (attention les mois commencent à 0...), si on rentre un truc du genre 32/01/1950 il renvoie 01/02/1950 donc il suffit de ressortir et de comparer avec l'entrée...
Donc pas de prise de tête avec les années bissextiles, à tester...merci de me signaler si ce code est correct.
@+ ;p
michel_roger Messages postés 60 Date d'inscription lundi 6 octobre 2003 Statut Membre Dernière intervention 18 août 2006
31 janv. 2005 à 00:28
Moi g fais ca, avec une liste déroulante pour les mois...
G préféré la facilité ;-), ca enlève le contrôle du mois entre 1 et 12...
donc pour le javascript voila :
//
// Renvoie true si la date est valide, false sinon
// Les paramètres: jour:val1; mois:val2; année:val3;
//
function testDate(val1, val2, val3) {
if(val1 '0' || val1 '00' || val3 == '0' || val3 == '00')
return false;
if(val3.length < 4)
return false;

var j_fev = ( bissextile(val3) ) ? ( 29 ) : ( 28 );
var tab_jours_mois = new Array(31,j_fev,31,30,31,30,31,31,30,31,30,31);
if(val1 > tab_jours_mois[val2-1])
return false;
return true;
}
//
// Reprise de la fonction de cbeyls
// pour savoir si l'année est bissextile
//
function bissextile (annee) {
return (annee%4 == 0) && ( (annee%100 != 0) || (annee%400 == 0) );
}
cbeyls Messages postés 31 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 13 mars 2005 1
22 janv. 2005 à 00:52
Sans vouloir être méchant, le code est vraiment décousu... en effet, au lieu d'écrire toute cette tartine:

if ((x <= 31)&&(nbjours_mois(y,z)==31))
{
return("True");
}
else if ((x <= 29)&&(nbjours_mois(y,z)==29))
{
return("True");
}
else if ((x<=28)&&(nbjours_mois(y,z)==28))
{
return("True");
}
else if ((x<=30)&&(nbjours_mois(y,z)==30))
{
return("True");
}
else
{
return("False");
}

Il suffirait d'écrire:

return ( x <= nbjours_mois(y,z) );

Oui tout ça peut se résumer en une ligne! Mais le test n'est pas complet. En effet, il serait mieux de tester également si le jour est > 0. Ce qui donne:

return ( (x > 0) && (x <= nbjours_mois(y,z)) );

Pour l'année bissextile, il est plus judicieux d'écrire une fonction qui prend en paramètre une année et renvoie true si et seulement si celle-ci est bissextile. Cela peut s'écrire également en une ligne:

function bissextile (annee) {
return (annee%4 ==0) && ( (annee%100 !=0) || (annee%400 ==0) );
}

Et celle-ci est juste. Quand tu dis que dans 400ans on ne sera plus là, pense à un programme d'histoire qui récolte des dates du passé... par exemple 1600... c'est pas si loin que ça finalement. Et de toutes façons, le raisonnement est faux puisque les années multiples de 400 sont bissextiles, et toutes les autres multiples de 100 ne le sont pas.
traversbourquin Messages postés 16 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 26 novembre 2004
14 sept. 2004 à 17:30
oimbart :
> A quoi sert de mettre un programme si il n'est pas expliqué?

Est-ce que cette remarque est pour moi ?
Si oui, autant préciser tout de suite que le code source n'est pas à la portée d'un débutant !
Utilisateur anonyme
14 sept. 2004 à 09:22
Hmm /!\

Si l'année n'est pas divisible par 4, l'année n'est pas bissextile.

Si l'année est divisible par 4, l'année est bissextile sauf si l'année est divisible par 100 et pas par 400.

Donc le premier n'est pas bon le deuxieme qui est en commentaire Oui (a ce niveau là)

A quoi sert de mettre un programme si il n'est pas expliqué?
traversbourquin Messages postés 16 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 26 novembre 2004
14 juil. 2004 à 03:01
<script type="text/javascript">
function test_date(jj,mm,aa){
if(jj.length!=2||jj<1||jj>31||mm.length!=2||mm<1||mm>12||aa.length!=4) return false;
if(mm==2){
if(jj==30||jj==31) return false;
if(jj==29) return ((aa%4==0&&aa%100!=0)||aa%400==0);
}
if(jj==31) return !(mm==4||mm==6||mm==9||mm==11);return true;
}

function date_valide(valeur){
var valeurDate=valeur, indSep1=valeurDate.indexOf("/"), indSep2=valeurDate.lastIndexOf("/"), jj=valeurDate.substring(0,indSep1), mm=valeurDate.substring(indSep1+1,indSep2), aa=valeurDate.substr(indSep2+1);
if ((indSep1==-1) && (indSep1==indSep2)) return false;
if (!test_date(jj,mm,aa)) return false;
return true;
}

function test_saisie(){
var formulaire=document.forms["form1"];
if (!date_valide(formulaire.elements["date"].value)){
alert("Veuillez vérifier la saisie de la date");
return false;
}
return true;
}
</script>


<form name="form1" onSubmit="return test_saisie()">
Date (au format jj/mm/aaaa) :
</form>
Rejoignez-nous