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

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

Votre réponse

7 réponses

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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de cs_hassan78
cs_H0gS 2 Messages postés mercredi 25 juin 2008Date d'inscription 19 avril 2011 Dernière intervention - 15 avril 2011 à 04:52
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
TheSaib 2369 Messages postés mardi 17 avril 2001Date d'inscription 26 décembre 2007 Dernière intervention - 21 mars 2006 à 02:28
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
cs_mcam 2 Messages postés mercredi 29 novembre 2000Date d'inscription 21 mars 2006 Dernière intervention - 21 mars 2006 à 18:19
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
dangod2401 12 Messages postés samedi 27 septembre 2008Date d'inscription 23 août 2010 Dernière intervention - 22 juin 2010 à 14:17
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
eddyminet 5 Messages postés mercredi 12 novembre 2003Date d'inscription 2 mars 2007 Dernière intervention - 2 mars 2007 à 16:01
-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.