Retrouver l'age à partir d'une date?

Retrouver l'age à partir d'une date? - PHP - Programmation

Marsh Posté le 13-09-2004 à 09:49:40    

j'ai du mal a trouver comment retrouver un age à partir d'une date de naissance (Y-m-d)
 
j'ai fait une soustraction de date
 
genre

Code :
  1. $age = date("Y-m-d" )-$sear->date_naiss;


 
ou $sear->date_naiss = "1984-05-05"
ca me donne bien 20 ans.
 
Le probleme c'est qu'en placant la date du serveur sur "2004-05-04" ca me sort toujours 20 ans :(
 
comment je pourrait faire? :(

Reply

Marsh Posté le 13-09-2004 à 09:49:40   

Reply

Marsh Posté le 13-09-2004 à 10:08:30    

fonction mktime.

Reply

Marsh Posté le 13-09-2004 à 10:16:21    

ben oui mais
 

Citation :

Warning: date(): Windows does not support dates prior to midnight (00:00:00), January 1, 1970 in


 
et j'ai pas mal de date de naissance < 1970 :(

Reply

Marsh Posté le 13-09-2004 à 10:23:42    

J'ai parle de mktime pas de date :o

Reply

Marsh Posté le 13-09-2004 à 10:26:17    

je sais je sais :D
 
mais je doit le combiner avec date nan?
 
j'ai fait

Code :
  1. $date = explode("-", $sear->date_naiss);
  2.  $age = date("Y", mktime(0, 0, 0, $date[1], $date[2], $date[0]));


 
mon MKtime est bon, sauf pour les valeur < 1970 egalement
 
Warning: mktime(): Windows does not support negative values for this function in c:\work\mylove\pages\index.php on line 697
 
:/

Reply

Marsh Posté le 13-09-2004 à 10:33:52    

chacal_one333 a écrit :

je sais je sais :D
 
mais je doit le combiner avec date nan?
 
j'ai fait

Code :
  1. $date = explode("-", $sear->date_naiss);
  2.  $age = date("Y", mktime(0, 0, 0, $date[1], $date[2], $date[0]));


 
mon MKtime est bon, sauf pour les valeur < 1970 egalement
 
Warning: mktime(): Windows does not support negative values for this function in c:\work\mylove\pages\index.php on line 697
 
:/


fais un "+100" sur les années, et basta!:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 13-09-2004 à 10:35:12    

"Therefore the range of valid years includes only 1970 through 2038."
 
date_naiss = 1960
+100 = 2060
 
BANG :o


Message édité par Profil supprimé le 13-09-2004 à 10:35:32
Reply

Marsh Posté le 13-09-2004 à 10:39:37    

chacal_one333 a écrit :

"Therefore the range of valid years includes only 1970 through 2038."
 
date_naiss = 1960
+100 = 2060
 
BANG :o

Putain c'est short...[:w3c compliant]
Fais tes calculs à la main, c'est trop naze...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 13-09-2004 à 10:42:04    

vais voir avec le boss pour passer sous linux [:joce]

Reply

Marsh Posté le 13-09-2004 à 10:43:57    

pfff moi pareil et pourtant :/
 

Citation :

year peut prendre deux ou quatre chiffres, avec les valeurs entre 0-69 qui correspondent à 2000-2069 et 70-99 à 1970-1999 (sur les systèmes où time_t sont sur des entiers 32bit signés, comme cela se fait le plus souvent de nos jours, year  est valide dans l'intervalle 1901 et 2038.
 
    Microsoft Windows : Les valeurs négatives des timestamp ne sont pas supportées sous toutes les versions actuelles de Microsoft Windows. De ce fait, l'intervalle valide pour les années est de 1970 à 2038, inclus.

Reply

Marsh Posté le 13-09-2004 à 10:43:57   

Reply

Marsh Posté le 13-09-2004 à 10:45:24    

wai ben linux rulaiz sur ce coup :jap:
 
a moins d'avoir des personnes née avant 1901, ca dont je doute [:joce]

Reply

Marsh Posté le 13-09-2004 à 14:18:23    

Utilises les fonctions de calendrier pour manipuler des jours juliens. Ensuite il reste plus qu'à faire les calculs, vu qu'il n'y a pas de fonctions pour ça :
 
Exemple http://www.surleau.com/test/age.php


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 13-09-2004 à 14:21:06    

merci mara's dad :)

Reply

Marsh Posté le 13-09-2004 à 14:56:10    

Bien sûr y'a beaucoup plus simple :)
 
C'était juste pour montrer l'existance des fonctions de calendrier...


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 13-09-2004 à 14:57:41    

ah ben si ya plus simple jveut bien hein [:totoz]
 
suis pas encore sous nunux, donc en attendant si tu a une fonction magique que je connait pas et qui se limite pas à 1970... :o

Reply

Marsh Posté le 13-09-2004 à 15:07:41    

Ben comme le timestamp est limité, on ne peux pas l'utiliser.
Donc on a :
$JN = Jour de naissance,
$MN = Mois de naissance,
$AN = Année de naissance,
$JA = Jour d'aujourd'hui,
$MA = Mois d'aujourd'hui,
$AA = Année d'aujourd'hui.
 
Donc $Age = $AA-$AN.
// 1 an de moins si l'anniversaire n'est pas passé :
Si( $AA > $AN et ( $MA < $MN ou ( $MA == $MN et $JA < $JN ) ) )
{
    $Age--;
}


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 13-09-2004 à 15:09:00    

ah bha oui forcement comme ca, c'est tout con.
 
Je voyait pas comment resoudre le probleme de l'année pas passé, mais je voit qu'avec les bonnes vieilles methode bien crade c'est faisable [:petrus75]

Reply

Marsh Posté le 13-09-2004 à 15:15:10    

http://www.surleau.com/test/age1.php :D


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 13-09-2004 à 18:19:51    


 
c competement hs  :o  
mis tu fe commetn pour afficher avec cette belle colo syntaxique  :??:

Reply

Marsh Posté le 13-09-2004 à 22:36:34    

Ben mets tes lunettes et regardes la dernière instruction :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed