Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CALCUL DE L'ÂGE (ANNÉE SEULEMENT)


Information sur la source

Catégorie :Date / Heure Niveau : Débutant Date de création : 03/03/2004 Date de mise à jour : 03/03/2004 16:49:27 Vu : 3 189

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

Description

Un code tout simple basé sur un commantaire de matrey sur la source http://www.phpcs.com/code.aspx?ID=13372 .
Son code contenait une "erreur".
Comme je n'ai pas trouvé de telle source autrement que dans son commentaire, je me permet de la poster ici, avec ma modification... J'ai aussi enlevé la gestion des mois...
 

Source

  • function age($date)
  • {
  • // source: http://www.phpcs.com/code.aspx?ID=13372
  • $date_current=mktime(0,0,0,date("n"),date("d"),date("Y"));
  • if (!$date)
  • {
  • return 0;
  • } else {
  • ereg("^([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})$",$date,$m_date);
  • if ($m_date[1] < 1971)
  • {
  • $plus = 1971 - $m_date[1];
  • $annee = 1971;
  • } else {
  • $plus = 0;
  • $annee = $m_date[1];
  • }
  • $date_born=mktime(0,0,0,$m_date[2],$m_date[3],$annee);
  • $diff = floor((($date_current - $date_born) / (3600 * 24)) / 365) + $plus;
  • return $diff;
  • }
  • }
function age($date)
{
  // source: http://www.phpcs.com/code.aspx?ID=13372
  $date_current=mktime(0,0,0,date("n"),date("d"),date("Y"));
  if (!$date)
  {
    return 0;
  } else {
    ereg("^([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})$",$date,$m_date);
    if ($m_date[1] < 1971)
    {
      $plus = 1971 - $m_date[1];
      $annee = 1971;
    } else {
      $plus = 0;
      $annee = $m_date[1];
    }

    $date_born=mktime(0,0,0,$m_date[2],$m_date[3],$annee);
    $diff = floor((($date_current - $date_born) / (3600 * 24)) / 365) + $plus;

    return $diff;
  }
} 

Conclusion

Voila...
 

Commentaires et avis

signaler à un administrateur
Commentaire de tubededentifrice le 03/03/2004 19:15:28

mdr
n'importe quoi
moi je fais ça en même pas une ligne :
floor((date("Ymd")-str_replace("-","",$naissance))/10000)
avec $naissance au format Y-m-d (standart mysql)
si elle est en format Ymd, on peut virer le str_replace (qui sert à la convertir à ce format)

signaler à un administrateur
Commentaire de Dark_Genova le 14/04/2004 22:47:01

Sans vouloir être méchant ce code me semble bien long pour rien ... et pas assez étoffer. Parce que calculer l'année c'est un jeu d'enfant quand tu as le paramètres année, mais calculer en plus en fonction du mois ! C'est ca qu'il faut faire parce que tu na pas forcément l'age indiqué suivant le mois de ta naissance, et même le jour pour faire précis.
Bref ta fonction est imprécises, je te montre celle que j'utilise pour mon forum perso, vous ne pourrez pas l'exploiter étant donné qu'il y a des paramètres externes mais le principe est là:
function User_Age($member_ID)
{
$query = User_Info($member_ID);
$birthday = explode('t',$query['users_Birthday']);

if ( $birthday[0] != 0 && $birthday[1] != 0 && $birthday[2] != 0 )
{
$age_time = mktime('0','0','0',$birthday[1],$birthday[0],$birthday[2]);
$birthday = $birthday[0] . ' / ' . $birthday[1] . ' / ' . $birthday[2];
$age = date("Y",time()) - date("Y",$age_time);

if ( date("m", time()) &lt;= date("m", $age_time) )
{
if ( date("j", time()) &lt;= date("j", $age_time) )
{
$age--;
}
}
$age .=  $lang['member_profile_year'];
}
else
{
$birthday = $lang['member_profile_sexe_none'];
$age = $lang['member_profile_sexe_none'];
}
$array = array($age, $birthday);

return $array;
}

signaler à un administrateur
Commentaire de tubededentifrice le 15/04/2004 07:15:33

trop long...
regarde mon 1er commentaire, tu fais ça en 1 ligne (tu peux même le faire dans une requete MYSQL) !!!!

signaler à un administrateur
Commentaire de Dark_Genova le 15/04/2004 11:11:58

Oui je suis d'accord avec toi, mais perso pour l'utilisation que j'en fais j'avais besoin der le faire comme ça ;)
Sinon c'est sur qu'il y a plus rapide.
++

signaler à un administrateur
Commentaire de natha le 01/06/2004 14:58:36

Ca marche pas pour les dates d'anniv avant 1970 ça ou bien ?!

signaler à un administrateur
Commentaire de Dark_Genova le 01/06/2004 16:04:36

Il y a de grandes chances puisque le timestamp de PHP compte les secondes depuis l'aire unix estimée en 1970 justement.

signaler à un administrateur
Commentaire de tubededentifrice le 01/06/2004 16:50:53

bah, utilisez mon code, il est 10x plus rapide et il marche avec toutes les dates

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,47 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.