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
A voir également:

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

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

Posez votre question
TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre 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
Rejoignez-nous