2010-02-10 10 views

Répondre

6

proprement parler,

TimeSpan age = DateTime.Now - dateTimePicker.Value; 

Cependant, déterminer "l'âge" de quelqu'un seulement un peu plus compliqué.

int years = DateTime.Now.Year - dateTimePicker.Value.Year; 

if(dateTimePicker.Value.AddYears(years) > DateTime.Now) years--; 

Comme années varient en longueur que vous aurez à faire plutôt que de compter sur une structure comme le TimeSpan qui représente une quantité de temps spécifique (la même chose est vraie pour déterminer combien de « mois » sont entre deux dates, puisque les mois varient en longueur de 28-31 jours).

La dernière ligne de code est là pour expliquer l'anniversaire de la personne qui n'a pas encore eu lieu cette année.

+0

int ans = DateHeure.Now.Année - dateHeurePicker.Valeur.Année; if (dateTimePicker.Value.AddYears (années)> DateTime.Now) years--; >> pourquoi est-ce que quand j'ai ajouté ce code dans datetimepicker .... l'âge n'apparaît pas? –

+0

@ malou17: Ajouter ce code ne va pas faire apparaître l'âge, il le calcule et le place dans une variable pour vous. Comment voulez-vous qu'il apparaisse? –

+0

Une logique assez épurée, le ValueChanged de la datepicker est l'endroit où vous pouvez placer le code. – Manny265

0

En supposant que le DateTimePicker est appelé dtpBirthday:

int age = DateTime.Now.Year - dtpBirthday.Value.Year - (DateTime.Now.DayOfYear < dtpBirthday.Value.DayOfYear ? 1 : 0); 
+0

Cela ne tient pas compte d'un anniversaire qui aura lieu plus tard dans le mois en cours. Par exemple, si mon anniversaire est le 24 février 1901, alors ce code dirait que je suis déjà 109 quand je ne suis qu'un spry 108. –