Function datediff [Résolu]

Signaler
Messages postés
6
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
13 juillet 2005
-
cerbain1
Messages postés
6
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
13 juillet 2005
-
L'utilisateur doit entrer sa date de naissance:

jour et annee avec un numericupdown control

mois avec un domaine updown control. ex: 1 Janvier 2000

Le code doit calculer l'age de la personne. Tout va bien jusqu'au 12 du mois, a partir du 13 il y a une erreur.

Je suppose que cela a quelque chose a voir avec le format de date
americian ou la methode parse. Mon pc est configure sur la
grande-bretagne.



Autre probleme, la fonction datediff arrondile resultat au chiffre
superieur, si il n'ya que 10 mois de difference, cela est arrondi a 1
an. Quel est la solution pour eviter cela.



Dim dateOfBirth as DateTime

Dim strDOB as String

Dim age as Short



strDOB = dayOfBirth &"/" & monthOfBirth &"/" & myYearOfBirth

dateOfBirth = dateTime.Parse(StringDOB) "Additional information: String was not recognized as valid datetime



Merci (si mon franglais prete a confusion, j'attacherai le code au complet)

5 réponses

Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
12
Alors, je t'ai trouvé un exemple in english, piqué à cette url :

http://www.profsr.com/vbnetfr/15440n8.htm

Public Function CalcAge(ByVal daten As Date) As Long
Dim lngAge As Long

If Not IsDate(daten) Or daten > Now Then
daten = Now()
End If

lngAge = DateDiff(DateInterval.Year, daten, Now)

If DateSerial(Year(Now), Month(daten), Microsoft.VisualBasic.DateAndTime.Day(daten)) > Now Then
lngAge = lngAge - 1
End If

CalcAge = lngAge

End Function

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 191 internautes nous ont dit merci ce mois-ci

Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
12
Salut, avec vb6, j'avais une astuce qui le faisait bien :

Age = int(DateDiff("y", CDate(DateNaissance), Date) / 365.25)

Je n'ai pas .net sous la main ce soir mais je crois que ça peut se traduire comme ça :

Age = cint(datediff(DateInterval.DayOfYear ,cdate(DateNaissance), datetime.today)/365.25)

Enfin, je te laisse voir ça.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
Messages postés
6
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
13 juillet 2005

J'ai essaye ce code de differente maniere mais le probleme reste

merci
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
12
Oups, excuses, pour le in english, c'est :

http://www.freevbcode.com/ShowCode.asp?ID=4462

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
Messages postés
6
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
13 juillet 2005

merci or thank you

Cela devrai m'aider a resoudre le probleme