Page 1 sur 1

Probleme calcul date

Posté : 17 sept. 2017, 07:41
par moon136
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

Re: Probleme calcul date

Posté : 18 sept. 2017, 10:51
par Frosty
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

Re: Probleme calcul date

Posté : 24 sept. 2017, 23:37
par moon136
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

Re: Probleme calcul date

Posté : 03 oct. 2017, 14:24
par moon136
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());

Re: Probleme calcul date

Posté : 04 oct. 2017, 08:49
par moon136
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

Re: Probleme calcul date

Posté : 05 oct. 2017, 23:27
par moon136
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