Je viens de retrouver un petit bout de code créé un bon matin avec une fonction qui permet de calculer l’âge de quelqu’un à partir de sa date de naissance :
function age($jour, $mois, $annee) { $age = (date('Y') - $annee); if( ($mois - date('m')) > 0 ) { $age = ($age - 1); } if( ($mois - date('m')) == 0 && ($jour - date('d')) > 0 ) { $age = ($age - 1); } return $age; } |
Si cela vous a servi ou inspiré, n’hésitez pas à faire un coucou, ça fait toujours plaisir !
20 octobre 2017 at 12 h 51 min
Bonjour,
Cette fonction m’a bien servie néanmoins il me semble qu’elle comporte une erreur.
ICI :
– Si le moisNaissance – moisActuel est supérieur à 0 (c.a.d si le mois de naissance est le suivant de celui en cours), alors on enlève 1 à l’age…Ce n’est pas ce qu’on attend il me semble.
– De même pour le jour, le test ne réagit que si le jours de naissance est le suivant du jours en cours.
Le test sur le mois et le jours ne devraient donc t’ils pas être inversés ?
comme cela on retranche 1 pour les dates antérieure à celle du jour et non l’inverse.
c’est d’ailleurs ce qui fonctionne pour moi. autrement cela ne fonctionne pas.
cela donnerais donc :
function age($jour, $mois, $annee)
{
$age = (date(‘Y’) – $annee);
if( ($mois – date(‘m’)) < 0 )
{
$age = ($age – 1);
}
if( ($mois – date('m')) == 0 && ($jour – date('d')) < 0 )
{
$age = ($age – 1);
}
return $age;
}
20 octobre 2017 at 13 h 07 min
Bonjour, merci pour votre remarque, mais si je fais le test concrètement :
Nous sommes le 20 Octobre 2017.
Je suis né disons le 21 Octobre 1986.
age(’21’, ’10’, ‘1986’) nous donnera :
$age = (2017 – 1986); // égale à 31
if( (10 – 10) > 0 ) // faux, égale à 0
{
$age = ($age – 1);
}
if( (10 – 10) == 0 && (21 – 20) > 0 ) // vrai car 10 – 10 = 0 puis 21 – 20 est plus grand que 0
{
$age = ($age – 1); // donc 31 – 1
}
echo $age; // j’ai 30 ans !
20 octobre 2017 at 13 h 24 min
Au temps pour moi…je me suis bien emmêlé les pinceaux…j’ai refais plusieurs test et cela fonctionne très bien avec votre code…(j’ai du faire les premiers test en mélangeant les dates..Vous pouvez supprimer mon premier commentaire si vous souhaitez..désolé (vendredi A-M pour ma défense 😉 )