Calculer l'âge en fonction de la date de naissance
Bonjour tout le monde,
Je suis entrain de réaliser un site web en PHP orienté objet donc j'ai une classe "Client" dans laquel se situe un attribut "DateDeNaissance" de type date(YYYY/MM/JJ).
J'aimerais calculer l'age grâce à la date de naissance, comment puis-je faire??
Je sais faire lorsque la date de naissance est divisé en 3 point : Jour, Mois, Années. Mais avec la date de naissance je vois pas comment faire pour prendre juste le mois ou juste l'année??
Merci d'avance!!
réponse à RideKick et à riete
Citation:
qui te permets de calculer le nombre de jours entre 2 dates , si tu le divise par 365.25 tu arrive sur un nombre d'années a virgule que tu peux arrondir , et/ou que tu peux comparer au jour précis de naissance pour afficher l'entier exact.
J'ai regardé l'exemple mais j'arrive pas à trouvé ce qui me concerne dans l'exemple(moi et l'anglais...:lol:)
Citation:
Mais en ce qui concerne ta question de savoir pourquoi tu n'a pas l'age de la personne que tu interroges, c'est simplement parce que tu ne passe pas sa valeur à ta fonction age().
Il faut que tu fasse:
Code :
$clients->age($clients->get_DateNaissance())
Bref, pour le moment j'aimerais régler le problème d'obtenir l'age selon la date de naissance de chaque client. J'ai fais ce que tu me conseille riete mais maintenant cela m'affiche 39ans a chaque fois, même si la date de naissance du client n'est pas renseigné dans la base.
Je vois vraiment pas pourquoi!!
Merci d'avance!!
réponse à riete et à SPKlls
Citation:
En ce qui concerne $clients->age($clients->get_DateNaissance()), j'ai émis cette hypothèse car je pensais que ta methode get_DateNaissance() retourne la date de naissance de ton client, juste ? Sauf que ta date en mysql est retournée avec un '-' et non u '/' !!! Tu me suis ?
Donc
Code :
list($jour, $mois, $annee) = explode ('/', $date);Devient
Code :
list($jour, $mois, $annee) = explode ('-', $date);Pour le problème de la valeur de l'age valable. Dans ton cas, tu as 21,96 ans donc. Si tu considère que tu as 21 tant que tu n'a pas 22 ans révolu, il ne te reste plus qu'a faire une truc du style:
Code :
if($age < ($age + 0.5)) $age = round( $age - 1);
Cela m'affiche bien 21 ans.
Citation:
Sinon :
Code PHP :
$dateDeNaissance = '01/01/1900';
$dateDeNaissance = explode('/', $dateDeNaissance);
$age = date('Y') - $dateDeNaissance[2];
Suis désolé mais j'aimerais avoir plus d'explication sur le bout de code que tu ma fournit car je le comprend bof.
P.S. : Sinon lorsque la date de naissance est égal à "0000-00-00" il m'affiche 8 ans.
Cordialement!!
réponse à riete et à CinePhil
Réponse à riete :
Citation:
Pour la question de la date 0000-00-00, c'est à toi de faire un test qui retourne un message du type "Inconnu" ou "date non fournie au cas ou la date de naissance ait cette valeur
Ui c'est pas bête, je vais essayé de voir ça!!
Citation:
Pour les explications, pas de pb, mais lesquelles ?
C'étais les explications sur le code de SPKlls mais c'est bon, il me les a donné!!merci quand même a toi!!
Réponse à CinePhil :
Citation:
Pris dans le livre de SQLPro, cette formule en SQL pour calculer un âge :
Code :
(((EXTRACT(YEAR FROM CURRENT_DATE)) * 365.2422
+ (EXTRACT(MONTH FROM CURRENT_DATE) - 1) * 31.0
+ EXTRACT(DAY FROM CURRENT_DATE))
-
((EXTRACT(YEAR FROM madate)) * 365.2422
+ (EXTRACT(MONTH FROM madate) -1 ) * 31.0
+ (EXTRACT(DAY FROM madate))
) / 365.2422
J'essayerai ceci pourquoi pas et je te tiens au courant!!
Merci a vous pour votre aide, j'essayerais cela quand j'aurai un peu plus de temps, je vous tiens au couant!!
Cordialement!!