Probleme calcul date

Pour toutes les discussions javascript, jQuery et autres frameworks
Répondre
moon136
Messages : 51
Enregistré le : 12 août 2017, 15:00

Probleme calcul date

Message par moon136 » 17 sept. 2017, 07:41

Salut dans le script ya un soucis de date.par exemplar quand on rentre la date du 01/01/2000, on se rend compte que le calcul n'est pas correct : il indique 16 ans et pas 17ans.

Code : Tout sélectionner


function CheckDate(d) {
      var amin=1900; 
      var amax=2500; 
      var separateur="/";
      var j=(d.substring(0,2));
      var m=(d.substring(3,5));
      var a=(d.substring(6));
      var ok=1;
      if ( ((isNaN(j))||(j<1)||(j>31)) && (ok==1) ) {
         alert("Le jour n'est pas correct."); ok=0;
      }
      if ( ((isNaN(m))||(m<1)||(m>12)) && (ok==1) ) {
         alert("Le mois n'est pas correct."); ok=0;
      }
      if ( ((isNaN(a))||(a<amin)||(a>amax)) && (ok==1) ) {
         alert("L'année n'est pas correcte."); ok=0;
      }
      if ( ((d.substring(2,3)!=separateur)||(d.substring(5,6)!=separateur)) && (ok==1) ) {
         alert("Les séparateurs doivent être des "+separateur); ok=0;
      }
      if (ok==1) {
         var d2=new Date(a,m-1,j);
         j2=d2.getDate();
         m2=d2.getMonth()+1;
         a2=d2.getYear();
         if (a2<=100) {a2=1900+a2}
         if ( (j!=j2)||(m!=m2)||(a!=a2) ) {
            ok=0;
         }
		 ok=d2;
      }
      return ok;
   }



function tjs_age() {
	var dt_naissance = document.getElementById("dt_naissance");
	var dt = dt_naissance.value;
	var d = CheckDate(dt);
	var m = new Date();
	var age=""; 
	var age_a=0;var age_m=0;
	if (d!=0) {
		if (d.getTime()>m.getTime()) {
			age="La date de naissance est supérieure à la date du jour !";
			dt_naissance.focus();
		}
		age_a = m.getFullYear()-d.getFullYear();
		m.setYear(d.getYear());
		if ((d.getTime()>m.getTime())&&(d.getMonth()-m.getMonth()!=0)) {age_a--;}
		if (d.getMonth() >= m.getMonth()) {
			age_m = 12 - (d.getMonth()-m.getMonth())
		} else {
			age_m = (m.getMonth()-d.getMonth())
		}
		if (age_m==12) {age_m=0;}
		if (age_a==1) { age=age_a+" an"}
		if (age_a>1) { age=age_a+" ans"}
		if ((age_a>0)&&(age_m>0)) {age+=" et "}
		if (age_m>0) {age+=age_m+" mois"}
		if (age=="") { age="moins de 1 mois"}
		age  = 'Age = '+age;
		if (age_a>0 && d.getDate()==m.getDate() && d.getMonth()==m.getMonth()) { age= "Joyeux Anniversaire\n"+age;}
	    
	} else {
		dt_naissance.focus();
	}
	alert(age);
}

window.addEventListener("load", function () {
    document.getElementById("envoyer").addEventListener("click", tjs_age);
});
. Ma connexion est mauvaise la ou je suis je nai pas fait de jsfidle

Merci

Avatar du membre
Frosty
Messages : 82
Enregistré le : 20 juil. 2017, 13:23
Localisation : Grenoble

Re: Probleme calcul date

Message par Frosty » 18 sept. 2017, 10:51

Salut,

- Tu aurais pu continuer dans l'ancien sujet sur les calculs de date d'anniversaire, il serait remonté en tête de liste tout pareil (enfin bon vu la fréquentation actuelle du forum c'est pas un drame non plus)

- Pour ce qui est du calcul d'âge, en effet il semble y avoir un bug (au moins), bien vu.
Du coup le réflexe c'est de taper par exemple dans Google "javascript compute age in years" ce qui me donne en 1er résultat ceci :
https://stackoverflow.com/questions/406 ... t-yyyymmdd
Tu peux récupérer le code de la 2ème réponse qui m'a l'air pas mal (l'autre semble limitée puisqu'elle fait intervenir "en dur" la valeur 1970) et l'adapter pour remplacer le calcul actuel dans la fonction tjs_age()
https://stackoverflow.com/a/7091965/488666

moon136
Messages : 51
Enregistré le : 12 août 2017, 15:00

Re: Probleme calcul date

Message par moon136 » 24 sept. 2017, 23:37

Merci pour ta réponse. Jai pensé que c t mieux de créer un nouveau poste..

Ok des que jaurai accès à un pc je ferai des tests pour résoudre ce problème

moon136
Messages : 51
Enregistré le : 12 août 2017, 15:00

Re: Probleme calcul date

Message par moon136 » 03 oct. 2017, 14:24

J'ai resolu une partie du bug

mais quand on rentre la date 10/10/2000 cela affiche 17 ans et pas 16 ans.
pourtant j'ai modifier dans function getAge

Code : Tout sélectionner

age_a = m.getFullYear()-d.getFullYear();
		m.setFullYear(d.getFullYear());

moon136
Messages : 51
Enregistré le : 12 août 2017, 15:00

Re: Probleme calcul date

Message par moon136 » 04 oct. 2017, 08:49

Je pense qu'il y a un soucis avec le code suivant

Code : Tout sélectionner

if ((d.getTime()>m.getTime())&&(d.getMonth()-m.getMonth()!=0)) {age_a--;}
du fait que j'ai corrige le code precedent

moon136
Messages : 51
Enregistré le : 12 août 2017, 15:00

Re: Probleme calcul date

Message par moon136 » 05 oct. 2017, 23:27

Je pensais que le bug pouvait venir du nom des variables, mais ce n'est pas ca. bon tant pis pour le moment je ne trouve pas

Répondre