Calcule d'age

Soyez le premier à donner votre avis sur cette source.

Snippet vu 20 503 fois - Téléchargée 26 fois

Contenu du snippet

C'est pour calculer l'age

Source / Exemple :


<HTML>
<HEAD><TITLE>Calcul de l'âge</TITLE>
<SCRIPT LANGUAGE="JavaScript">

function CheckDate(d) {
      // Cette fonction vérifie le format JJ/MM/AAAA saisi et la validité de la date.
      // Le séparateur est défini dans la variable separateur
      var amin=1850; // année mini
      var amax=2500; // année maxi
      var separateur="/"; // separateur entre jour/mois/annee
      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) ) {
            alert("La date "+d+" n'existe pas !");
            ok=0;
         }
		 ok=d2;
      }
      return ok;
   }

function tjs_age(dt) {
	// Cette fonction retourne une chaîne de type :
	//  "15 ans et 6 mois"
	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 !";
			document.formage.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"}
	} else {
		document.formage.dt_naissance.focus();
	}
	return age;
}
</SCRIPT>
</HEAD>

<BODY bgcolor="#FFFFFF">
<FONT FACE="Arial" SIZE='-1' COLOR="#000099">

<CENTER><BIG><B>Calcul de l'âge</B></BIG></CENTER>
<BR>

<FORM name="formage">
	Entrez votre date de naissance (JJ/MM/AAAA) : <INPUT type=text name="dt_naissance" size=10 maxlength=10>
	<INPUT type=button value="Calcul de l'âge" onClick="alert('Age = '+tjs_age(this.form.dt_naissance.value))">
</FORM>

Ce script contient 2 fonctions :<BR>
CheckDate() qui vérifie la validité de la date <BR>
tjs_age() qui retourne une chaîne de caractères de type "15 ans et 6 mois" ou "8 mois" ou "1 an"<BR>
<BR><BR><BR><BR><BR>
<CENTER><A href="http://www.toutjavascript.com"><FONT size="1" face="arial" color="#CCCFFF">Tout JavaScript.com</FONT></A></CENTER>

<BR>
</FONT>

</BODY></HTML>

A voir également

Ajouter un commentaire

Commentaires

Messages postés
2
Date d'inscription
mercredi 10 août 2005
Statut
Membre
Dernière intervention
24 mars 2010

meilleur code :
<HTML>
<HEAD><TITLE>Calcul de l'âge</TITLE>
<SCRIPT LANGUAGE= "JavaScript"><!--
function CheckDate(d) {
// Cette fonction vérifie le format JJ/MM/AAAA saisi et la validité de la date.
// Le séparateur est défini dans la variable separateur
var amin=1850; // année mini
var amax=2500; // année maxi
var separateur="/"; // separateur entre jour/mois/annee
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))||(aamax)) && (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<=1900)
a2=1900+a2;
if ( (j!=j2)||(m!=m2)||(a!=a2) ) {
alert("La date "+d+" n'existe pas !");
ok=0;
}
else
ok=d2;
}
return ok;
}
function tjs_age(dt) {
return tjs_age2(dt, new Date());
}
function isleapyear(year)
{
if(year % 4 != 0)
return 0;
if(year % 100 != 0)
return 1;
if(year % 400 != 0)
return 0;
return 1;
}
function tjs_age2(dt, auj) {
// Cette fonction retourne une chaîne de type :
// "15 ans et 6 mois"
var d=CheckDate(dt);
var age=""; var age_a=0;var age_m=0;
if (d != 0) {
if (d.getTime() > auj.getTime()) {
age = "La date de naissance est supérieure à la date du jour !";
}
else {
auj0 = (auj.getFullYear() * 12) + auj.getMonth();
d0 = (d.getFullYear() * 12) + d.getMonth();
if (auj.getDate() < d.getDate()) {
age_m = auj0 - d0 - 1;
var NBDAYSPREVMONTH = new Array (31, 31, 28+isleapyear(auj.getFullYear()), 31, 30, 31, 30, 31, 31, 30, 31, 30);
age_d = auj.getDate() + Math.max(0, NBDAYSPREVMONTH[auj.getMonth()] - d.getDate());
}
else {
age_m = auj0 - d0;
age_d = auj.getDate() - d.getDate();
}
age_a = parseInt( age_m / 12 );
age_m %= 12;
age_s = parseInt( age_d / 7 );

if (age_a > 0) {
if (age_a > 1)
age = age_a + " ans";
else
age = "1 an";
}

if ((age_a < 2) && (age_m > 0)) {
if (age != "")
age += " et ";
age += age_m + " mois";
}

if ((age_a < 1) && (age_s > 0)) {
if (age != "")
age += " et ";
if (age_s == 1)
age += "1 semaine";
else
age += age_s + " semaines";
}

if (age == "") {
if (age_d == 1)
age = "1 jour";
else
age = age_d + " jours";
}
}
}
return age;
}
// -->
</SCRIPT>
</HEAD>

<CENTER> Calcul de l'âge </CENTER>

<FORM name ="formage">
Entrez votre date de naissance (JJ/MM/AAAA) :

Aujourd'hui (JJ/MM/AAAA) :

</FORM>

Ce script contient 2 fonctions :

CheckDate() qui vérifie la validité de la date

tjs_age() qui retourne une chaîne de caractères de type "15 ans et 6 mois" ou "8 mois" ou "1 an"

(c) Olivier Matheret 2010

</HTML>
Messages postés
2
Date d'inscription
mercredi 10 août 2005
Statut
Membre
Dernière intervention
24 mars 2010

Déjà il faut modifier : if (a2<=1900) {a2=1900+a2}
puis enlever 2 fois document.formage.dt_naissance.focus() qui n'ont rien à faire là
puis modifier le coeur pour prendre en compte le jour dans le mois... en faisant attention au 29 février

ça donne ça :
<SCRIPT LANGUAGE="JavaScript"><!--
function CheckDate(d) {
// Cette fonction vérifie le format JJ/MM/AAAA saisi et la validité de la date.
// Le séparateur est défini dans la variable separateur
var amin=1850; // année mini
var amax=2500; // année maxi
var separateur="/"; // separateur entre jour/mois/annee
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))||(aamax)) && (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<=1900)
a2=1900+a2;
if ( (j!=j2)||(m!=m2)||(a!=a2) ) {
alert("La date "+d+" n'existe pas !");
ok=0;
}
else
ok=d2;
}
return ok;
}
function tjs_age(dt) {
return tjs_age2(dt, new Date());
}
function tjs_age2(dt, auj) {
// Cette fonction retourne une chaîne de type :
// "15 ans et 6 mois"
var d=CheckDate(dt);
var age=""; var age_a=0;var age_m=0;
if (d != 0) {
if (d.getTime() > auj.getTime()) {
age = "La date de naissance est supérieure à la date du jour !";
}
else {
auj0 = (((auj.getFullYear() * 12) + auj.getMonth()) * 31) + auj.getDate();
d0 = (((d.getFullYear() * 12) + d.getMonth()) * 31) + d.getDate();
age0 = auj0 - d0;
age_a = parseInt( age0 / (12*31) );
age_m = parseInt( (age0 % (12*31)) / 31 );
age_d = age0 % 31;
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 d'un mois";
}
}
return age;
}
// -->
</SCRIPT>
Messages postés
124
Date d'inscription
samedi 8 avril 2006
Statut
Membre
Dernière intervention
29 janvier 2009

Bonjour. Beaucoup ont vu cette source et aucun n'a mit de commentaire.
Je rencontre un problème. J'entre une date de naissance : 28/02/1989, la date du jour étant 20/02/2007 le calcul trouve 18 ans. Et bien non, il aura 18 ans dans 8 jours.
J'aurais voulu mettre ce script dans une page web mais il faut que le calcul soit précis. Sans doute une modif à faire. Cordialement

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.