cool!!! 
 De Romain Taieb - Mercredi 17 Juillet 2002 à 11:06

j'en avait besoin juste today!!

  Et en javascript... 
 De Serge Delbono - Samedi 20 Juillet 2002 à 12:25

J'avais fait ça en javascript, avec une méthode plus "agricole" (la date de naissance est en dur dans le code).
-----
<script language="javascript">
<!--
age = 0 ;
today=new Date() ;
age=today.getYear() ;
if (age <200) age += 1900 ;
y=age ;
age -=1954
if (today.getMonth()<2)
age-- ;
if (today.getMonth()==2) {
if (today.getDate() <28) age--;
if (today.getDate()==28) alert ("Joyeux anniversaire, Serge !")
}
document.write("Nous sommes en "+ y +". Serge a "+age+" ans.")
//-->
</script>

  Re: Et en javascript... 
 De Serge Delbono - Samedi 20 Juillet 2002 à 12:26

A noter que je suis né en mars (le mois est codé de 0 à 11 en javascript).

  Autre solution ... 
 De Frédéric Bouchery - Mardi 30 Juillet 2002 à 14:21

Soit on utilise une regexp pour décomposer :

<?php
// on décompose
ereg('^ *([0-9]{1,2})/([0-9]{1,2})/([0-9]{1,4}) *$',$ddn, $decompose_aniv);
list(,$jdn, $mdn, $adn) = $decompose_aniv;
// on fait le calcul
$age = date('Y') - $adn;
if((mktime(0,0,0,date('m'), date('d'), $adn) - mktime(0,0,0,$mdn,$jdn,$adn)) < 0) $age--;
echo $age;
?>

Le plus simple étant de ne pas faire la décomposition, c'est pô trop utile, non ?
<?php
$adn = '1972';
$mdn = '07';
$jdn = '30';

$age = date('Y') - $adn;
if((mktime(0,0,0,date('m'), date('d'), $adn) - mktime(0,0,0,$mdn,$jdn,$adn)) < 0) $age--;
echo $age;
?>

  Ma petite solution... 
 De Olivier R. - Mardi 6 Août 2002 à 20:13

avec un autre style j'avoue ;)

<?
#
# age.php - v1.0 par orx57
# [ http://www.orx57.net ]
#
# Vous n'avez qu'à renseigner les trois
# variables suivantes, au noms très parlants,
# et à ajouter l'instruction include à l'endroit
# où vous souhaitait voir apparaître votre age :
#
# include("age.php");
#

$myBirthDay = 23;
$myBirthMonth = 11;
$myBirthYear = 1980;

#################################################

$current_date = getdate(time());

$birthday_date = getdate(mktime(0,0,0,$myBirthMonth,$myBirthDay,$myBirthYear));

if ( $current_date["mon"] < $birthday_date["mon"] )
$age = $current_date["year"] - $birthday_date["year"] - 1 ;

if ( $current_date["mon"] > $birthday_date["mon"] )
$age = $current_date["year"] - $birthday_date["year"] ;

if ( ( $current_date["mon"] == $birthday_date["mon"] ) && ( $current_date["mday"] < $birthday_date["mday"] ) )
$age = $current_date["year"] - $birthday_date["year"] - 1 ;

if ( ( $current_date["mon"] == $birthday_date["mon"] ) && ( $current_date["mday"] >= $birthday_date["mday"] ) )
$age = $current_date["year"] - $birthday_date["year"] ;

printf ("%d\n" , $age);
?>

  Ma modeste solution 
 De Vincent Aube - Vendredi 9 Août 2002 à 17:47

<?
// la date de naissance est au format YYYY-MM-DD
// Variable date de naissance : date_naiss
$a=substr($date_naiss, 0, 4);
$m=substr($date_naiss, 5, 2);
$j=substr($date_naiss, 8, 2);
// on transforme la date de naissance en format unix
$unix=mktime(00,00,00,$m,$j,$a);
// la date du jour
$dte=mktime();
// date du jour-date de naissance diviser par le nombre de secondes dans l'année
// pour ne pas avoir d'erreurs d'arrondit, on ne garde que les 2 premiers chiffres du resultat
$age=substr(($dte-$unix)/31536000, 0, 2);