Vous n'êtes pas identifié(e).
Pages :: 1
Bonjour,
J'aimerais faire un script qui calcul précisément l'âge d'une personne en partant de sa date de naissance.
C'est assez facile avec la fonction mktime();
Mais avec cette méthode, je me retrouve avec un âge en secondes.
Comment faire pour obtenir un âge précis (nombre d'années, mois, jours) en tenant compte des années bissextiles des mois à 30 et 31 jours,...
Je précise que l'objectif du script est de calculer l'âge d'enfants en bas âge. Pas de problème de date avant 1970 donc...
D'avance merci pour vos conseils.
Hors ligne
Bonjour,
Voilà comment tu peu calculer l'age d'une personne en fonction de sa date de naissance
j'ai coder ça vite fais donc ce n'est pas très propre, je te laisse le nettoyer et retirer ce que tu n'a pas besoin
$date_d_naissence = '08';
$date_m_naissence = '05';
$date_y_naissence = '1988';
$date_de_naissence = $date_d_naissence.'/'.$date_m_naissence.'/'.$date_y_naissence;
/* FORMAT DATE */
// SI TU UTILISE LE FORMAT 08-05-1988 ou 08/05/1988 Il TE SUFFIE DE REMPLACER LES / PAR -
// explode '/' + date(d/m/y)
function Age($date_naissance)
{
$arr1 = explode('/', $date_naissance);
$arr2 = explode('/', date('d/m/Y'));
if(($arr1[1] < $arr2[1]) || (($arr1[1] == $arr2[1]) && ($arr1[0] <= $arr2[0])))
return $arr2[2] - $arr1[2];
return $arr2[2] - $arr1[2] - 1;
}
$age = Age($date_de_naissence);
/* PETIT PLUS */
// J'ai rajouter un ptit if si nous sommes bien le jour & le moi de la date de naissence
// on lui souhaite un bonne anniversaire
// SI TU UTILISE LE FORMAT 08-05-1988 ou 08/05/1988 Il TE SUFFIE DE REMPLACER LES / PAR -
if($date_d_naissence.'/'.$date_m_naissence == date("d").'/'.date("m"))
{
$date_anniversaire = 'Joyeux anniversaire ';
}
echo $date_anniversaire.'vous avez '.$age.' ans';
?>
Hors ligne
Voilà comment je ferais. Il y a peut-être moins tordu...
Utiliser :
le modulo (%) pour récupérer le reste de la division.
floor() pour arrondir à l'entier inférieur.
{édit} date('t') pour le nombre de jours dans le mois
Principe :
Diviser le nombre de secondes (ton $diff) par 60 pour l'avoir en « xx minutes : xx secondes »
réserver les secondes dans $sec
Diviser le nombre de minutes par 60 pour avoir en « xx hour : xx minutes »
réserver les minutes dans $min
etc... jusqu'à diviser le nombre de mois par 12 pour avoir « xx ans : xx mois »
et écrire l'âge : $an ans $mois mois ... et $sec secondes
tu peux aussi utiliser microtime() si tu veux plus précis
Dernière modification par cramj (07-12-2009 19:00:49)
Hors ligne
>>Il y a peut-être moins tordu...
ha ça c'est sur :D:D
a++
Hors ligne
Je panse que cette date de naissance est stokée dans une table.
Donc, c'est tout simplement faisable avec une requête sql.
Voir datediff
a++
Hors ligne
Moi, j'ai une solution que j'utilise et que j'ai piquée dans un bouquin:
Voilà...
Ralph303
Hors ligne
Avec des pansements aux dessins de petits noursons ?
Wooow XTG .. je sais pas ce que c'est, mais vraisemblablement, c'est puissant ^^
MERCI de lire le mode d'emploi avant de poster !!
Hors ligne
Bah c'est surtout que tout le monde lui répond mais sans lui donner de réponse qui résoudrai son problème alors je me lâche.
Faire une différence de date presque tout le monde sait le faire et je pense bien que ce n'était pas son soucis (en plus avec les 4 solutions "différentes" qu'on a dans ce topic...) mais cela ne règle en rien le problème du nombre de jours dans le mois courant...
Si on se trouve en mars vos algo vont afficher :
X années, 2 mois et N jours.
Or suivant que cela soit une année bissextile ou non cela sera pas N mais N-1 voire même N-2 car on gère encore moins le mois de février à 29jours...
Hors ligne
Voilà essai donc ça
elle prendre en compte les années bissextiles
source: JDN Développeur
++
Dernière modification par wootzee (08-12-2009 10:08:25)
Hors ligne
put1, tout ca pour trouver l'age
a++
Hors ligne
Bon, j'me lance, puisque que personne ne veux t'aider
a++
Hors ligne
Où personne ne veux regarder ?! ... (d'accord je sort)
Je ne vois pas en quoi le bous de code du JDN ne correspond pas à ce qui demande ?
Cette fonction formatte le jour, le mois et l'année, puis compare les valeurs entre elles pour vérifier que le nombre d'années est exact.
J'aimerais faire un script qui calcul précisément l'âge d'une personne en partant de sa date de naissance.
...
Comment faire pour obtenir un âge précis (nombre d'années, mois, jours) en tenant compte des années bissextiles des mois à 30 et 31 jours,...
Cette fonction ne remplie pas les critères requis ?
@++ les amies !
Hors ligne
>>Cette fonction ne remplie pas les critères requis ?
bah non
la preuve ->
[citation]
Comment faire pour obtenir un âge précis (nombre d'années, mois, jours)
[/citation]
Hors ligne
Humm....:rolleyes:
Je ne veux pas m'avancer [...] elle remplie la fonction, par défaut seul l'année est mis
ensuite il suiffe de rajouter la fonction pour le jour & le mois exemple :
Sans oublier de le rajouter dans l'écho
Dernière modification par wootzee (09-12-2009 16:17:57)
Hors ligne
>>e ne veux pas m'avancer
tu s raison, ne t'avance pas :D
il suffit toujours de rajouter
et tu fais une fonction qui fais 20000000000 de lignes pour tout simplement calculer un age ???????????????
bah moi, je fait tout simplement une simple requête
a++
Hors ligne
Pages :: 1