Age dynamique

dalisassou Messages postés 81 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 14 janvier 2010 - 19 nov. 2007 à 11:40
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 - 20 nov. 2007 à 20:36
SLT TOUT LE MONDE,

j'ai un problem pour le calcul d'age,
mon pb consiste a que quelqu'un qui est né le 10/12/1990 le 10/12/2007 à 17 il faut qu'au 10/12/2008 elle son age devient automatiquement 18 ans
merci d'avance pour votre aide

12 réponses

codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
19 nov. 2007 à 12:33
bah c'est des simples calculs sur les dates ?!
Tu peux t'amuser avec les fonctions spécifiques de php.
Pour ma part pour pas me faire chier, je transforme tout en unixtimestamp (date à partir du 1er janvier 1970), et je transforme tout comme il faut :p Apres je sais pas si c'est la meilleure solution
Cherche des sources, tutos, astuces sur phpcs
0
TheGorgo Messages postés 224 Date d'inscription mercredi 23 mai 2007 Statut Membre Dernière intervention 8 septembre 2014 1
19 nov. 2007 à 16:13
salut

le code c'est :
// date du mec
$D = "10/12/1986";
// Date du mec sous forme de tableau
$Date = explode("/", $D);
// $Date[0] => 10
// $Date[1] => 12
// $Date[2] => 1986

// Récupération de la date d'aujourd'hui
$DateA[0] = date("d");
$DateA[1] = date("m");
$DateA[2] = date("Y");

et après tu fais les test qu'il faut :
if($Date[0] >= $DateA[0] && $Date[1] >= $DateA[1]){
    $Age = $Date[2] - $DateA[2];
}
else {
    $Age = $Date[2] - $DateA[2] - 1;
}

// un truc dans le style .....
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 18
19 nov. 2007 à 16:54
Salut,

Avec des timestamp, c'est plus joli, je trouve.

$date = '10/12/1990';
list($d, $m, $y) = explode('/', $date);
$birth_ts = mktime(0,0,0, $m, $d, $y);

// Savoir si une personne est majeure :
$is_adult = (strtotime('+18years', $birth_ts) <= time());

// Savoir son age en années
$age = date('Y', $now - $birth_ts)-1970;
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 18
19 nov. 2007 à 16:55
Hum... Avec
$now = time();
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 18
19 nov. 2007 à 17:00
Et puis si on a l'heure, on peut facilement l'intégrer, sans rajouter de ligne :

$date = '10/12/1990 12h30';
list($d, $m, $y, $h, $min) = sscanf($date, '%02d/%02d/%04d %02dh%02d');
$birth_ts = mktime($h, $min, 0, $m, $d, $y);

// Savoir si une personne est majeure :
$is_adult = (strtotime('+18years', $birth_ts) <= time());

// Savoir son age en années
$age = date('Y', time() - $birth_ts)-1970;
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
20 nov. 2007 à 00:12
perso je trouve qu'avec le timestamp, ca oblige à utiliser des fonctions en plus, et parfois mysql fait des choses bizarres avec le timestamp... enfin bref :) apres c'est comme tout :)
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 18
20 nov. 2007 à 00:20
Ou tu vois un timestamp dans du mysql, dans ce qui a été donné ici ?
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
20 nov. 2007 à 01:14
"Avec des timestamp, c'est plus joli, je trouve." tu a dit :)
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 18
20 nov. 2007 à 01:21
Ben ouais... Parce que je trouve que mon code (en toute modestie) est plus joli que celui proposé par TheGorgo. Il est plus court, plus lisible, plus joli quoi.
Moi, je parlais de timestamp dans php. Toi aussi d'ailleurs, puisque tu disais que tu convertissais tout en timestamp et que tu ne manipulais que ça. Moi aussi, sauf cas particuliers.
Pour stocker ça dans une base de données, j'utilise une colonne de type INT(10). Pas le timestamp MySQL, dont je ne sais donc pas s'il est efficace, utile, propre, joli, performant ou quoi...
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
20 nov. 2007 à 14:27
ok, alors je suis d'accord avec toi :) juste une question, tu stocke sous quelle valeur dans mysql ? moi c'est en timestamp UNIX (secondes depuis 1er janvier 1970), et toi ?
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 18
20 nov. 2007 à 14:57
Comme je l'ai déjà dit :
"Pour stocker ça dans une base de données, j'utilise une colonne de type INT(10)"
Un timestamp unix étant un entier, je le stocke dans une colonne de type INT...
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
20 nov. 2007 à 20:36
ok, mais je me demandais si tu utilisais un timestamp unix ou une autre méthode. D'ou ma question.
Mais ta réponse m'indique que j'utilise une bonne méthode (puisque la meme :p)
0
Rejoignez-nous