Besoin d'aide PHP calculer un age - Programmation
Marsh Posté le 25-02-2002 à 16:30:31
il te faut extraire l'année de la date et le comparer à l'année courante
Marsh Posté le 25-02-2002 à 16:37:53
Me![Nombre_Jours].Value = DateDiff("d", Me![Date_deb], Me![Date_Fin])
DSL JE SAIS QUE LE FAIRE EN VB
Marsh Posté le 25-02-2002 à 16:47:58
lord ii a écrit a écrit : il te faut extraire l'année de la date et le comparer à l'année courante |
oui mais c pas vraiment juste comme resultat tu veut dire :
2002-1979=23
23 ans mais j'aurrais 23ans le 13/04/2002 moi alors c po bon.
Marsh Posté le 25-02-2002 à 16:57:13
Pour avoir le jour exact, il te faut passer par un timestamp mais ca ne marche pas pour une date avant 1970
Marsh Posté le 25-02-2002 à 17:00:14
lord ii a écrit a écrit : il te faut extraire l'année de la date et le comparer à l'année courante |
Le problème est qu'il faut aussi comparé le mois, et le jour.
Bon tu peux extraire le jour/mois/annee ainsi :
list ($jour, $mois, $annee) = split ("#/#", $date);
sachant que $date contient la date au format jj/mm/aaaa.
Tu fais la même opération sur la date actuelle (que tu obtiens avec :
date ("d/n/Y" )
) et ensuite tu te débrouilles pour comparer les jours/mois/années.
Marsh Posté le 25-02-2002 à 17:14:57
c justement la comparaicson qui me pose un probleme !
<?
$date1 = ("13/04/1979" );
$today = date ("d/n/Y" );
list ($jour, $mois, $annee) = split ("#/#", $date1);
list ($jour2, $mois2, $annee2) = split ("#/#", $today);
//et la c la merde je c plus quoi faire
//$age = TO_DAYS(NOW())-TO_DAYS($date))/365;
echo = ("$age" );
?>
Marsh Posté le 25-02-2002 à 17:20:42
// Calcul de la date à partir de laquelle on supprime les fichiers
$toto = mktime(0,0,0,date("m" ),date("d" ) - $nb_jours,date("y" ));
$datesuppr = strftime("%y%m%d",$toto);
moi j'ai utilisé le code ci-dessus pour enlever un certain nombre de jour à la date actuelle
ca peut peut-être t'aider...
je l'ai trouvé sur www.php.net (ou via une recherche google je me rappelle plus).
Marsh Posté le 25-02-2002 à 17:26:54
benwar a écrit a écrit : c justement la comparaicson qui me pose un probleme ! <? $date1 = ("13/04/1979" ); $today = date ("d/n/Y" ); list ($jour, $mois, $annee) = split ("#/#", $date1); list ($jour2, $mois2, $annee2) = split ("#/#", $today); //et la c la merde je c plus quoi faire //$age = TO_DAYS(NOW())-TO_DAYS($date))/365; echo = ("$age" ); ?> |
Bah tu fais ceci :
$age = $annee2 - $annee;
if ($mois2 < $mois) {$age--;};
if ($mois2 == $mois AND $jour2 < $jour) {$age--;};
et voila
Marsh Posté le 25-02-2002 à 17:50:57
<?
$date1 = ("13/4/1979" );
$today = date ("d/n/Y" );
//je croi que la fonction liste ne fonctionne po
//car si je fait un echo de $jour y a rien
list ($jour, $mois, $annee) = split ("#/#", $date1);
list ($jour2, $mois2, $annee2) = split ("#/#", $today);
$age = $annee2 - $annee;
if ($mois2 < $mois) {$age--;};
if ($mois2 == $mois AND $jour2 < $jour) {$age--;};
echo ("$age" );
// $age donne 0 comme resultat bizard non ?
?>
Marsh Posté le 25-02-2002 à 17:56:01
[citation// $age donne 0 comme resultat bizard non ?
?>
[/citation]
Non c'est pas bizarre, tu as mis :
$date1 = ("13/04/1979" );
C'est ça qu'il faut mettre :
$date1 = "13/04/1979";
C'est une string, pas un tableau
Marsh Posté le 26-02-2002 à 14:55:41
<?
$date1 = "13/04/1979";
$today = date ("d/m/Y" );
//si je mets les valeurs si-dessou ca marche ;
//sinon y a toujours 0 en resultat je pense que c la fontion list qui ne marche po
// quand je fait un echo ("$annee" ); ou ("$annee2" ); rien meme po 0
//j'ai cherché de la doc sur elle et je ne pas trouvé d'explication.
//$jour = "13";
//$mois = "4";
//$annee = "1947";
//$jour2 = "26";
//$mois2 = "2";
//$annee2 = "2002";
list ($jour, $mois, $annee) = split ("#/#", $date1);
list ($jour2, $mois2, $annee2) = split ("#/#", $today);
$age = $annee2 - $annee;
if ($mois2 < $mois) {$age--;};
if ($mois2 == $mois AND $jour2 < $jour) {$age--;};
echo ("$age" );
?>
Marsh Posté le 26-02-2002 à 15:00:47
Essaye les split comme ca
list( $jour, $mois, $annee ) = split( '[/.−]', $date1 );
Vu dans la doc sur la fonction split
Marsh Posté le 26-02-2002 à 15:29:02
Merci c bon
Pour les prochains qui voudrons faire la meme chose :
<?
$date1 = "13/04/1979";
$today = date ("d/m/Y" );
list( $jour_today, $mois_today, $annee_today ) = split( '[/.-]', $today );
list( $jour, $mois, $annee ) = split( '[/.-]', $date1 );
$age = $annee_today - $annee;
if ($mois_today < $mois) {$age--;};
if ($mois_today == $mois AND $jour_today < $jour) {$age--;};
echo ("$age ans" );
?>
PS : j'ai testé avec une date anteriere à 1970 et c bon mais je ne l'ai pas encord testé sous linux...
En tout cas merci
[jfdsdjhfuetppo]--Message édité par benwar--[/jfdsdjhfuetppo]
Marsh Posté le 26-02-2002 à 15:44:20
benwar a écrit a écrit : Merci c bon Pour les prochains qui voudrons faire la meme chose : |
Oups oui en fait j'avais pensé qu'il fallait mettre des délimiteurs d'expression régulière avec split... mais pas besoin en fait. Ce que je voulais faire c'était
split ("/", $date)
ce qui marche mais ca ne prendra en compte que le '/' en tant que séparateur.
Marsh Posté le 25-02-2002 à 16:17:12
Salut je voudrais trouver l'age de kelk1 a partir de sa date de naissance ; en PHP
exp :
<?
$date = ("13/04/1979" );
$age = fontion_trouve_age($date);
echo = ("$age" );
?>
merci
[jfdsdjhfuetppo]--Message édité par benwar--[/jfdsdjhfuetppo]