Calculer l'age de quelqu'un.

Résolu
cs_mcam
Messages postés
2
Date d'inscription
mercredi 29 novembre 2000
Statut
Membre
Dernière intervention
21 mars 2006
- Modifié le 24 nov. 2018 à 09:51
 loky - 9 févr. 2018 à 08:55
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

6 réponses

eddyminet
Messages postés
5
Date d'inscription
mercredi 12 novembre 2003
Statut
Membre
Dernière intervention
2 mars 2007
3
Modifié le 24 nov. 2018 à 09:52
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;
}
3
cs_hassan78
Messages postés
1
Date d'inscription
lundi 4 avril 2005
Statut
Membre
Dernière intervention
11 mai 2011
2
Modifié le 24 nov. 2018 à 09:51
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
2
dangod2401
Messages postés
12
Date d'inscription
samedi 27 septembre 2008
Statut
Membre
Dernière intervention
23 août 2010
1
Modifié le 24 nov. 2018 à 09:52
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;

}
1
cs_H0gS
Messages postés
2
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
19 avril 2011
1
15 avril 2011 à 04:52
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 );
         }
      }
1

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

Posez votre question
TheSaib
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
23
Modifié le 24 nov. 2018 à 09:52
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
0
Parce-que si une année bissextile est passer pendant ça vie, son age est décaler d'un jour
0
cs_mcam
Messages postés
2
Date d'inscription
mercredi 29 novembre 2000
Statut
Membre
Dernière intervention
21 mars 2006

21 mars 2006 à 18:19
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
0