Âge à partir date naissance

Résolu/Fermé
Étienne9 Messages postés 1022 Date d'inscription mardi 1 mars 2011 Statut Membre Dernière intervention 10 mai 2015 - 16 avril 2013 à 14:28
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 - 18 avril 2013 à 15:17
Bonjour à tous,

J'ai créé ma propre fonction qui calcule l'âge à partir de la date de naissance mais je voulais savoir ce que vous en pensez.
function age($j,$m,$a) {
	$age = (date("Y")-$a-1);
	if ((date("m")) >= $m) {
		if ((date("m")) == $m) {
			if (date("d") >= $j) {
				$age = $age+1;
			}
		}
		else {
			$age = $age+1;
		}
	}
	return $age;
}


Merci beaucoup d'avance.

2 réponses

ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
16 avril 2013 à 14:37
Salut,

Je trouve ça compliqué, perso j'aurais fait un truc du genre :

function age($birthdate) {
    return floor((time()-$birthdate)/(60*60*24*365));
}

$ddn = mktime(0,0,0,2,11,1985);
echo age($ddn);
0
Utilisateur anonyme
16 avril 2013 à 14:47
Oui, il faut connaitre mktime pour cela :)
0
Étienne9 Messages postés 1022 Date d'inscription mardi 1 mars 2011 Statut Membre Dernière intervention 10 mai 2015 49
16 avril 2013 à 14:52
Le problème c'est que votre fonction n'est pas précise... Un mois ne fait pas toujours 365 jours...
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
16 avril 2013 à 14:57
non tu as raison, un mois ne fait pas toujours 365 jours, en général il fait plutôt 30 ou 31 jours ^^
Si t'y tiens, tu peux compter le nombre d'années bissextiles et rajouter un jour à chaque fois.
0
Étienne9 Messages postés 1022 Date d'inscription mardi 1 mars 2011 Statut Membre Dernière intervention 10 mai 2015 49
16 avril 2013 à 14:58
Et ma solution ne marche pas ?
0
Utilisateur anonyme
16 avril 2013 à 15:05
Votre solution marche parfaitement.
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
17 avril 2013 à 22:24
Salut,

Tu peux voir avec l'objet DateTime peut être, a mon souvenir il y a pas mal de fonction pour récuperer l'écart entre deux dates (donc ta date de naissance, et la date du jour)
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
18 avril 2013 à 08:47
ouais mais ça ne prendra pas en compte les années bissextiles, il a pas tort sur ce point.

Comparer des DateTime revient au même que ce que j'ai fait, sauf qu'on manipule des objets.
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
18 avril 2013 à 14:40
Bah si, l'objet DateTime prend tout en compte, c'est basé sur des timestamp donc forcément les années bissextiles sont comptées
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
18 avril 2013 à 14:56
function age($birthdate) {
    $now = new DateTime('now');
    $interval = $birthdate->diff($now);
    return $interval->format('%y');
}

$ddn = new DateTime('1985-04-18');;
echo age($ddn);


ça a l'air d'être suffisamment précis en effet.
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
18 avril 2013 à 15:05
A ton service ;-)
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
18 avril 2013 à 15:09
C'est pas moi qui demandait de l'aide sur ce sujet ^^
0