Calculer l'age de quelqu'un. [Résolu]

Signaler
Messages postés
2
Date d'inscription
mercredi 29 novembre 2000
Statut
Membre
Dernière intervention
21 mars 2006
-
 loky -
Bonjour,

Je cherche le moyen de calculer l'âge d'une personne en c#.
J'ai bien essayé ceci (proposé sur le site) :

// source : http://www.csharpfr.com/infomsg/DIFFERENCE-ENTRE-DEUX-DATES_321602.aspx
systime = DateTime.Today;

DateTime datenaissance;
systime.AddDays(-datenaissance.Day);

datenaissance.AddMonths(-datenaissance.Month);

int annee = systime.Year - datenaissance.Year;


mais si je demande d'afficher, j'obtient 0 ! (pratique pour rester jeune )
Pourquoi ?

Merci de vos futures réponses !!!

MC
A voir également:

6 réponses

Messages postés
5
Date d'inscription
mercredi 12 novembre 2003
Statut
Membre
Dernière intervention
2 mars 2007
3
en mieux formaté  :
public

int GetAge(
DateTime DateDeNaissance) {

      // Age théorique
      int age = 
DateTime.Now.Year - DateDeNaissance.Year;

      // Date de l'anniversaire de cette année
      DateTime DateAnniv = 

            new
DateTime(
DateTime.Now.Year, DateAnniv.Month, DateAnniv.Day);

      // Si pas encore passé, retirer 1 an
      if (DateAnniv > 
DateTime.Now)
            age--;

      return age;
}
Messages postés
1
Date d'inscription
lundi 4 avril 2005
Statut
Membre
Dernière intervention
11 mai 2011
2
Correction HOgS!!

dans ton code si DateTime.Now.Month > Naissance.Month et que DateTime.Now.Day < Naissance.Day tu risque d'enlever une année en trop!

Exemple : a l'heure ou j'écris nous somme le 11/05/2011, si ma date de naissance est le 15/04/2010 ton calcul renvoi Age 0 au lieu de Age1

public int Age
      {
         get
         {
            return DateTime.Now.Year - Naissance.Year -
                     ( DateTime.Now.Month < Naissance.Month ? 1 :
                     (DateTime.Now.Month == Naissance.Month && DateTime.Now.Day < Naissance.Day) ? 1 : 0 );
         }
      }


PS: J'ai juste corrigé n’empêche tu es le plus méritant je n'aurai pas fait mieux
Messages postés
12
Date d'inscription
samedi 27 septembre 2008
Statut
Membre
Dernière intervention
23 août 2010
1
Sans les erreurs de compilations :) !
public int GetAge(DateTime DateDeNaissance) {

      // Age théorique
      int age = DateTime.Now.Year - DateDeNaissance.Year;

      // Date de l'anniversaire de cette année
      DateTime DateAnniv = 
            new DateTime(DateTime.Now.Year, DateDeNaissance.Month, DateDeNaissance.Day);

      // Si pas encore passé, retirer 1 an
      if (DateAnniv > DateTime.Now)
            age--;

      return age;

}
Messages postés
2
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
19 avril 2011
1
Mieux encore...

public int Age
      {
         get
         {
            return DateTime.Now.Year - Naissance.Year -
                     ( DateTime.Now.Month < Naissance.Month ? 1 :
                     DateTime.Now.Day < Naissance.Day ? 1 : 0 );
         }
      }
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
Pourquoi faire compliqué :
public static int GetAge(DateTime birthDate)
{
TimeSpan span = DateTime.Now.Subtract(birthDate);
return span.Days / 365;
}


::|The S@ib|::
MVP C#.NET
Parce-que si une année bissextile est passer pendant ça vie, son age est décaler d'un jour
Messages postés
2
Date d'inscription
mercredi 29 novembre 2000
Statut
Membre
Dernière intervention
21 mars 2006

Merci pour l'aide, je vais essayer ce soir.
C'est vrai que cela parait beaucoup plus simple et plus logique.
Bon... je débute donc, il faut bien que je me prenne un peu la tête

MC