IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

comment calculer l'âge selon date naissance


Sujet :

Delphi

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Août 2006
    Messages : 106
    Par défaut comment calculer l'âge selon date naissance
    Bonjour à tous,

    j'ai fait une application et j'ai besoin de savoir l'âge d'une personne selon sa date de naissance. Quelqu'un peut m'aider ?

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2003
    Messages : 422
    Par défaut
    Citation Envoyé par walid_kerkoub
    Bonjour à tous,

    j'ai fait une application et j'ai besoin de savoir l'âge d'une personne selon sa date de naissance. Quelqu'un peut m'aider ?
    Et qu'est-ce qui te pose de problème ? Tu n'as qu'à soustraire l'année en cours avec l'année de naissance, et juste faire un test concernant le mois et le jour pour savoir si son anniversaire est déjà passé ou non.

  3. #3
    Membre Expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Par défaut
    Citation Envoyé par MiJak
    Et qu'est-ce qui te pose de problème ? Tu n'as qu'à soustraire l'année en cours avec l'année de naissance, et juste faire un test concernant le mois et le jour pour savoir si son anniversaire est déjà passé ou non.
    pour vous quelqu'un qui est né le 31 décembre 2006 ce retrouve le 01/01/2007 au matin avec un ans d'age .

    vous pouvez utilser la fonction YearsBetween de l'unité DateUtils.

    si vous voulez un calcule particulier tu devra écrire ta propre fonction.

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2003
    Messages : 422
    Par défaut
    Citation Envoyé par aityahia
    pour vous quelqu'un qui est né le 31 décembre 2006 ce retrouve le 01/01/2007 au matin avec un ans d'age .
    Ah non il faut bien lire mon message : on soustrait 2007 à 2006 = 1, et ensuite comme je l'ai écrit juste faire un test pour savoir si son anniversaire est passé, et comme ce n'est pas le cas (1er janvier < 31 décembre), on soustrait 1 au résultat, donc 0 an

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Août 2006
    Messages : 106
    Par défaut
    mais où avais-je la tête ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
          DecodeDate(Date(), YearA, MonthA, DayA);
                    DecodeDate(StrToDate(Self.Edit1.Text), YearN, MonthN, DayN);
     
                      if MonthA<MonthN then
                        age:=yearA-yearN-1
                      else
                          if MonthA>MonthN then
                              age:=YearA-YearN
                          else
                               if DayA<DayN then
                                    age:=yearA-YearN-1
                                else
                                     age:=yearA-yearN;
     
                    Self.Edit2.Text:=IntToStr(age);
    Merci MiJack.

  6. #6
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 001
    Par défaut
    ou plus court (soucis avec bissextile)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    YearsBetween(Date(), StrToDate(Self.Edit1.Text));
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Membre Expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Par défaut
    il ne faut pas réinventé la roue.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Try
       Edit2.Text:=IntTostr(YearsBetween(Now,StrToDate(Edit1.Text))); 
    Except
     Edit2.Text := 'Erreur, Date de naissance Incorrecte';
    end;

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Août 2006
    Messages : 106
    Par défaut
    ton code est plus simple, je ne connaissait pas l'existance de la fonction YearsBetween.

    Merci à tous.

  9. #9
    Membre émérite
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Par défaut
    Citation Envoyé par aityahia
    pour vous quelqu'un qui est né le 31 décembre 2006 ce retrouve le 01/01/2007 au matin avec un ans d'age .
    Oui. L'âge en années, c'est le nombre d'années entières qu'on a vécu, c'est la partie entière de l'âge décimal en années, donc oui.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ABAP] Comment calculer la date de naissance
    Par Dianker dans le forum SAP
    Réponses: 5
    Dernier message: 09/02/2010, 17h08
  2. Comment calculer des dates
    Par Grosmou dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 28/02/2008, 13h25
  3. Réponses: 2
    Dernier message: 05/01/2005, 14h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo