Âge à partir date naissance [Résolu/Fermé]

Signaler
Messages postés
1022
Date d'inscription
mardi 1 mars 2011
Statut
Membre
Dernière intervention
10 mai 2015
-
Messages postés
1226
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
-
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

Messages postés
8319
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
18 juillet 2018
1 368
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);
Messages postés
1022
Date d'inscription
mardi 1 mars 2011
Statut
Membre
Dernière intervention
10 mai 2015
48
Le problème c'est que votre fonction n'est pas précise... Un mois ne fait pas toujours 365 jours...
Messages postés
8319
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
18 juillet 2018
1 368
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.
Messages postés
1022
Date d'inscription
mardi 1 mars 2011
Statut
Membre
Dernière intervention
10 mai 2015
48
Et ma solution ne marche pas ?
Utilisateur anonyme
Votre solution marche parfaitement.
Messages postés
1022
Date d'inscription
mardi 1 mars 2011
Statut
Membre
Dernière intervention
10 mai 2015
48
Impeccable. Merci :)
Je trouve que c'est plus simple que de compter les années bissextiles...
Bien sûr avant j'ai fait un appel à checkdate.
Messages postés
1226
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
72
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)
Messages postés
1226
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
72
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
Messages postés
8319
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
18 juillet 2018
1 368
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.
Messages postés
1226
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
72
A ton service ;-)
Messages postés
8319
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
18 juillet 2018
1 368
C'est pas moi qui demandait de l'aide sur ce sujet ^^
Messages postés
1226
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
72
Ah oui, j'avais pas vu ! Autant pour moi :p