CALCUL DE L'AGE D'UNE PERSONNE (ASP VBSCRIPT)

tikrimi Messages postés 192 Date d'inscription dimanche 5 janvier 2003 Statut Membre Dernière intervention 9 mars 2007 - 12 oct. 2006 à 22:38
cs_bluedemon Messages postés 41 Date d'inscription mercredi 21 septembre 2005 Statut Membre Dernière intervention 3 novembre 2008 - 28 août 2007 à 12:08
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/39899-calcul-de-l-age-d-une-personne-asp-vbscript

cs_bluedemon Messages postés 41 Date d'inscription mercredi 21 septembre 2005 Statut Membre Dernière intervention 3 novembre 2008
28 août 2007 à 12:08
La fonction a été corrigée :-)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 août 2007 à 18:40
ne fonctionne pas ?

plus qu'étrange ^^

quelle est ta date de naissance ? et l'age que ca te retourne
cs_iceman64b Messages postés 30 Date d'inscription mardi 28 février 2006 Statut Membre Dernière intervention 5 mars 2013
23 août 2007 à 17:53
La fonction originale ne fonctionne pas correctement, puisqu'à l'approche de l'anniversaire, la personne a déjà un an de plus. Pour la version écourtée (avec datediff), c'est l'inverse: une fois la date d'anniversaire passée, la personne n'a toujours pas son année supplémentaire.

Mon but est simplement d'avoir dans une BD, les noms, prénoms et date de naissance de personne que je connais et que via la page asp, je puisses savoir leur âge actuelle. Sauf que dans le cas de la fonction avec le datediff (malgré la correction de Renfield, ma date de naissance est en juin et nous sommes en août et mon âge est incorrect (manque un an). Si je prends le source proposé par Bluedemon, les personnes que je connais qui sont nées en septembre, ont déjà un an de plus!.

Y-a-t-il moyen d'avoir un calcul de l'âge qui fonctionne ????
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
16 oct. 2006 à 06:44
DateDiff("yyyy"...
te donnera, Tikrimi un résultat erroné

le meilleu moyen est de faire :

datediff("d",#12/31/1983#,now)\365.25
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 4
12 oct. 2006 à 22:49
Salut,

Avec pourquoi pas aussi au tout début de la fonction un :
If Not IsDate(dat) Then Return 0
pour éviter les problèmes... :-)

Jette un coup d'oeil aux fonctions sur les Dates, comme dit Tikrimi, autant les utiliser :
http://www.w3schools.com/vbscript/vbscript_ref_functions.asp#date

A++,
Nurgle
tikrimi Messages postés 192 Date d'inscription dimanche 5 janvier 2003 Statut Membre Dernière intervention 9 mars 2007 1
12 oct. 2006 à 22:38
Hello,

J'ai pas regardé en détail, mais l'ASP propose des fonctions sur les dates, et autant les utiliser.
En utilisant la fonction DateDiff, ta fonction peut devenir la suivante :

function age(dat)

dim vAge
dim vNow
dim vDateNaissance
vDateNaissance = cdate(dat)
vNow = Date
vAge = clng(datediff("yyyy",cdate(dat),vNow))
'on enlève un an si la bougie n'a pas été soufflée dans l'année en cours
if DateDiff("d",DateSerial(year(vNow),Month(vDateNaissance),Day(vDateNaissance)),vNow) > 0 then
vAge = vAge - 1
end if
age = vAge

end function

Bon code,

Christophe
Rejoignez-nous