Sahid Ferdjaoui Blog - Funraill Foundation Bienvenue, Log in - thème 2007 RC1

Powered by OpenSource Softwares

Outil de déboggage colaborative
reduire

Calcul de l’age en php a partir d’une date de naissance

le 27 juin 2006 par sahid

Tutorial Php permettant le calcul d’un age à partir de sa date de naissance

Tout est dans le titre, voici une fonction permettant le calcul de l’age en Php, j’ai essayé de commenter un maximum le script, bon il n’y a rien de bien difficile, mais etant donné que j’ai vu la question sur un forum, je me suis dit que ça pouvait servir (:

  1. function calculAge($jour, $mois, $annee){
  2. /*
  3. ** mktime() - retourne le nombre de secondes entre le début de l’époque
  4. UNIX (1er Janvier 1970 00:00:00 GMT) et le temps spécifié. **/
  5. $unixDate = mktime(0, 0, 0, $mois, $jour, $annee);
  6. /*
  7. ** time() - retourne l’heure courante, mesurée en secondes depuis le début de l’époque
  8. UNIX, (1er janvier 1970 00:00:00 GMT). **/
  9. $nowDate = time();
  10. /*
  11. ** Donc, on a le nombre de secondes entre le 1er Janvier 70 et la date de
  12. naissance, et le nombre de secondes depuis le 1er Janvier 70 et la date d’aujourd’hui,
  13. On soustrait ces deux dates, et on a le nombre de secondes entre today et la date de
  14. naissance. **/
  15. $ageUnix = $nowDate - $unixDate;
  16. /*
  17. ** Maintenant on convertit le nombre de secondes en année et
  18. on arrondit le nombre obtenu **/
  19. $age = floor($ageUnix / (365 * 24 * 60 * 60));
  20.  
  21. return $age;
  22. }
  23.  
  24. $myAge = calculAge(17,11,1984);
  25. print $myAge;

Bon, un petit souci, c que avant 1970 bah ca coince …

7 commentaires pour Calcul de l’age en php a partir d’une date de naissance

  1. fred dit :

    Salut, en gros si on sait pas calculer l’age des personnes nées avant le 1/1/1970 bin elle sert à rien ta fonction ;)

  2. andré dit :

    Je tenais à te filer une fonction bien plus simple et qui fonctionne pour les age en dessou de 1970, fraichement codée lol :

    function calcul_age($jour_naiss,$mois_naiss,$annee_naiss)
    {
    $debutYear = mktime(0,0,0,1,1,1980);
    $T_timeYear = mktime(0,0,0,date(’d'),date(’m'),1980);
    $B_timeYear = mktime(0,0,0,$jour_naiss,$mois_naiss,1980);
    $age = date(’Y')-($annee_naiss);
    $Dif_today = $debutYear - $T_timeYear;
    $Dif_birthday = $debutYear - $B_timeYear;
    if($Dif_today>$Dif_birthday) {$age=$age-1;}
    return $age;
    }

  3. andré dit :

    jvé la commentée quand meme :p desolé:

    function calcul_age($jour_naiss,$mois_naiss,$annee_naiss)
    {
    #on prend le timestamp du 1er janvier 1980, on aurai pu prendre une autre année, c’est ce qui va nous servir de base pour les calculs#
    $debutYear = mktime(0,0,0,1,1,1980);

    #on prend le timestamp du jour et du mois d’aujourd’hui mais toujours de lannée 1980#
    $T_timeYear = mktime(0,0,0,date(’d’),date(’m’),1980);

    #on prend le timestamp du jour et du mois de naissance mais toujours de lannée 1980#
    $B_timeYear = mktime(0,0,0,$jour_naiss,$mois_naiss,1980);

    #on calcule l’age de base sans compter les jours dans un premier temps#
    $age = date(’Y’)-($annee_naiss);

    #grace aux timestamp de 1980 recuperés, on calcul un timestamp correspondan aux jours d’ecarts entre le 1er janvier 1980 et la “jour d’aujourdui” “mois aujourd’hui” 1980#
    $Dif_today = $debutYear - $T_timeYear;

    #meme chose pour la date d’anniv#
    $Dif_birthday = $debutYear - $B_timeYear;

    #si la difference entre le debut de lannée et de le jour d’anniversaire est superieure a la diference du debut de lannée au jour d’aujourdhui c’est que l’anniversaire n’est pas encore passé, donc on enleve 1 à l’age calculé au dessus#
    if($Dif_today>$Dif_birthday) {$age=$age-1;}
    return $age;
    }

    Voila jespere ke c plus clair LOL

  4. Julien dit :

    Le script de André (en commentaire) est très bien pour ne pas se limiter à 1970 et prend en compte si l’anniversaire est passé ou non pour l’année en cours.
    ATTENTION: ERREUR dans la fonction “mktime”:
    $T_timeYear = mktime(0,0,0,date(’d’),date(’m’),1980);
    $B_timeYear = mktime(0,0,0,$jour_naiss,$mois_naiss,1980);

    Le jour et le mois doivent être inversés !! on doit avoir:
    $T_timeYear = mktime(0,0,0,date(’m’),date(’d’),1980);
    $B_timeYear = mktime(0,0,0,$mois_naiss,$jour_naiss,1980);

    De plus, 1980 n’est pas pris complètement au hasard. Il doit s’agir d’une année bissextile (sinon, le 29/02/aaaa risque de ne pas exister et faire une erreur).

  5. tishun dit :

    Modifier cette ligne:
    if($Dif_today < $Dif_birthday) {$age=$age-1;}

  6. tishun dit :

    mieux encore:

    function age($naiss) {
    list($jour, $mois, $annee) = split(’[/.]’, $naiss);
    $today[’mois’] = date(’m');
    $today[’jour’] = date(’d');
    $today[’annee’] = date(’Y');
    $annees = $today[’annee’] - $annee;
    if ($today[’mois’] $today[’jour’])
    $annees–;
    }
    else
    $annees–;
    }
    echo $annees;
    }

    $monAge = age($dn);

  7. Simon dit :

    Voilà en une ligne une fonction sans faille :

    function cdate($dt)
    {
    echo floor( ( time() - strtotime($dt) ) / (365.2422 * 24 * 60 * 60) );
    }

    Elle calcule bien évidemment l’âge des gens nés avant 1970, car tout le monde le sait, deux - (moins) font un + (plus).

Tu peux laisser un commentaire pour Calcul de l’age en php a partir d’une date de naissance