Calcul votre âge !!

Soyez le premier à donner votre avis sur cette source.

Snippet vu 16 480 fois - Téléchargée 32 fois

Contenu du snippet

voici mon code sans prétention pour calculer votre âge de façon précise, je me mets en ligne car je n'en ai pas trouver tout fait donc si cela peut aider qqu'un d'autre.
De plus, je ne l'ai pas testé sur différentes dates, je compte donc sur votre sagacité pour l'améliorer. Voilà

Source / Exemple :


<html><head><title>Combien ai-je vécu ??</title> 

<SCRIPT LANGUAGE="JavaScript">

/* détermine le nombre de jour de février si bissextile */
function fevrier(i)
	{if ((!(i % 4) && (i % 100)) || !(i % 400))
		{return 29;
		}
	 else
		{return 28;
		}
	}

/* cette fonction donne le nbr de jours de chaque mois, celle- ci peut-être remplacé par un array, je 

pense*/

function jourabs(frg,ann)
{ var nj = 0;
	switch (frg)
	 { 	case 1 : nj = 31; break;
	 	case 2 : nj = fevrier(ann); break;
		case 3 : nj = 31; break;
		case 4 : nj = 30; break;
		case 5 : nj = 31; break;
		case 6 : nj = 30; break;
		case 7 : nj = 31; break;
		case 8 : nj = 31; break;
		case 9 : nj = 30; break;
		case 10 : nj = 31; break;
		case 11 : nj = 30; break;
		case 12 : nj = 31; break;
	}
return nj;
}
	
function delai(annee,mois,jour,heure,min)
{
	var date_fin=new Date(annee,mois-1,jour,heure,min); /* date de départ */
	var date_jour=new Date(); /* aujourd'hui*/
	var tps=(date_jour.getTime()-date_fin.getTime())/1000; /* différence en millisecondes */
	
	
	var nbjtotal=Math.floor(tps / 86400);     	/* le nb de jour */
	nbjtotal2 = nbjtotal;
	tps=tps % 86400;
	
	moisdujour = date_jour.getMonth()+1;
	xcd = mois;
	nbmois =0;
	nban =0;

	do
		{
	 	nbjourmois = jourabs(xcd,annee);   /* détermine le nbr de jour du mois en cours*/
			if (nbjtotal - nbjourmois >= 0)  /* si le nbr de total - le nbr du jour du mois 

est supérieur à zero */
				{ 	nbjtotal = nbjtotal - nbjourmois; /* alors on retranche le 

nbjour du mois du nbr de jour total */
					nbmois = nbmois+1;  /* et donc ajoute un mois au compteru mois*/
				if (nbmois - 12 >= 0) /* si le nbr de mois est supérieur à 12 */
				 	{ 	nbmois -= 12; /* alors on en enleve 12 */
						nban += 1; /* et on ajoute une année au compteur 

d'années */
					}
			}		
	xcd += 1;  /* on passe au mois suivant */
			if (xcd > 12)  /* il n'y a que 12 mois donc le 13 eme et passé à 1*/
				{xcd =1;
				}

		}while (nbjtotal > 30); /* on repete jusqu'a ce que le nbr de jour soit inférieur à 1 

mois*/
		

	var h=Math.floor(tps / 3600);		//  le nb d'heure
	tps=tps % 3600;
	var minute=Math.floor(tps/60);		//  le nb minute
	tps=tps % 60;
	var s=Math.floor(tps);
	
	if (nbjtotal != 1)
		oiu = " jours ";
		else
		oiu = " jour ";
	if (h != 1)
		plk = " heures ";
		else
		plk= " heure ";
	if (nban != 1)
		bnh = " ans ";
		else
		bnh= " an ";
	
	var txt= nban+bnh+nbmois+" mois "+nbjtotal+oiu+h+plk+minute+" min et "+s+" sec"; /* la chaîne de 

retour */
	return txt;
}

function disp_delai()
{
	document.forms["mail"].elements[0].value=delai(1975,01,26,03,30); /* ici la date de naissance à 

modifier */
	setTimeout("disp_delai()",1000);
}

</SCRIPT>

</head>

<body text="#000000" alink="#FF8C00" link="#FF8C00" vlink="#FF8C00" onLoad="disp_delai()">
<FONT FACE="Arial" SIZE="-1" COLOR="navy">
<CENTER>
  <BIG><B><font color="#000000" size="+6">Combien ai-je vécu ??</font></B></BIG>
</CENTER><BR><BR>

<FORM NAME="mail" METHOD=GET>
  <div align="center">je suis né, il y a : 
    <INPUT NAME="RESTE" SIZE=50 MAXLENGTH=50>
    <BR>
    <BR>
  </div>
</FORM> 

</FONT>
</body>
</html>

Conclusion :


Bonne continuation à tous !

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
vendredi 11 mai 2007
Statut
Membre
Dernière intervention
11 mai 2007

Il doit y avoir un petit bugg.
Pour la date de naissance 06.05.1964 et aujourd'hui:11.05.2007 j'ai encore 42ans alors qu'en realité j'en ai 43a, 0mois et 5jours.
Cordialement
Messages postés
124
Date d'inscription
samedi 8 avril 2006
Statut
Membre
Dernière intervention
29 janvier 2009

L'explication de CBEYLS est très judicieuse. En effet si on entre une année de naissance équivalente à 18 ans: exemple né le 20/02/1989 et la date du jour 20/02/2007 on trouve 18 ans et 4 jours, le pÔve gars à raté son anniversaire de 4 jours. Donc pas de cadeaux.
Il ne faut pas compter les années bissextiles. En fait je cherche une solution pour orienter un internaute en fonction de son âge au jour près. Si quelqu'un à une solution merci d'avance. Cordialement.
Messages postés
4
Date d'inscription
lundi 12 juin 2006
Statut
Membre
Dernière intervention
13 juin 2006

merci c'est ce que je cherchais deseperement !!!
Messages postés
31
Date d'inscription
samedi 22 janvier 2005
Statut
Membre
Dernière intervention
13 mars 2005
1
J'avoue n'avoir rien compris à la source. C'est... assez loufoque. Je crois que tu as mélangé 2 idées très différentes.

Soit il s'agit de calculer un âge en années, mois, jours, heures, minutes, secondes, alors il ne faut pas convertir les 2 dates en objets Date() et les soustraire, puisqu'il ne faut pas tenir compte des années bissextiles. Une année reste une année, bissextile ou pas. C'est comme si je demandais: combien d'années se sont écoulées entre le premier janvier 1900 et le premier janvier 2000 ? Vous me répondez: 100 ans tout pile! Et pourtant durant ces 100 ans, il y aura eu 24 années bissextiles, pourtant on ne dit pas qu'il s'est écoulé 100 ans et 24 jours car ces années bissextiles on les compte comme des années ordinaires, pas comme si elles étaient égales à une année et un jour (si vous me suivez toujours?).

Soit, 2e cas possible, il faut calculer l'âge en nombre de jours exacts, là effectivement le fait qu'une année soit bissextile ou pas a de l'importance dans le compte. Mais justement, dans ce cas il suffit de soustraire 2 objets Date et on aurait la durée exacte entre les 2, on ne doit même pas se tracasser des calculs de bissextiles ou pas, c'est java qui le calcule pour nous, il suffit de convertir le résultat en jours, heures, minutes et secondes.

Alors, maintenant, à toi de décider laquelle de ces 2 choses tu veux calculer et ré-écrire le code en conséquence. Je veux bien le faire si tu veux, ça ne doit pas être bien long.
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
38
euh... dsl j'ai pas pris le temps de me pencher sur ton thème... pourtant c'ets pas très compliqué...

ensuite tu fais une convertion avec des %
Afficher les 8 commentaires

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.