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

Messages postés
2
Date d'inscription
mercredi 29 novembre 2000
Dernière intervention
21 mars 2006
-
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
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
1
Date d'inscription
lundi 4 avril 2005
Dernière intervention
11 mai 2011
2
Merci
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

Merci cs_hassan78 2

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de cs_hassan78
Messages postés
2
Date d'inscription
mercredi 25 juin 2008
Dernière intervention
19 avril 2011
1
Merci
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 );
         }
      }
Commenter la réponse de cs_H0gS
Messages postés
2369
Date d'inscription
mardi 17 avril 2001
Dernière intervention
26 décembre 2007
0
Merci
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
Commenter la réponse de TheSaib
Messages postés
2
Date d'inscription
mercredi 29 novembre 2000
Dernière intervention
21 mars 2006
0
Merci
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
Commenter la réponse de cs_mcam
Messages postés
12
Date d'inscription
samedi 27 septembre 2008
Dernière intervention
23 août 2010
0
Merci
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;

}
Commenter la réponse de dangod2401
Messages postés
5
Date d'inscription
mercredi 12 novembre 2003
Dernière intervention
2 mars 2007
-2
Merci
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;
}
Commenter la réponse de eddyminet

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.