Function datediff

Résolu
cerbain1
Messages postés
6
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
13 juillet 2005
- 13 juil. 2005 à 18:13
cerbain1
Messages postés
6
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
13 juillet 2005
- 13 juil. 2005 à 23:37
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

cs_CanisLupus
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Membre
Dernière intervention
13 mars 2006
18
13 juil. 2005 à 22:43
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
cs_CanisLupus
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Membre
Dernière intervention
13 mars 2006
18
13 juil. 2005 à 21:51
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 !?
0
cerbain1
Messages postés
6
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
13 juillet 2005

13 juil. 2005 à 22:25
J'ai essaye ce code de differente maniere mais le probleme reste

merci
0
cs_CanisLupus
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Membre
Dernière intervention
13 mars 2006
18
13 juil. 2005 à 22:46
Oups, excuses, pour le in english, c'est :

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

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

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

Posez votre question
cerbain1
Messages postés
6
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
13 juillet 2005

13 juil. 2005 à 23:37
merci or thank you

Cela devrai m'aider a resoudre le probleme
0