Comment compter l'age à partir d'une date de naissance ?

sikove Messages postés 90 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 31 mars 2010 - 16 mai 2008 à 19:58
 Utilisateur anonyme - 17 mai 2008 à 19:14
salut,

dans java comment peut on compter l'age de quelqu'un à partir d'une date de naisance qu'on lui demande de forunir ?

j'ai pensé à mettre le type de la date de naissance en String, apres j'extrait/convertit les 4 dernieres lettres en int, et compter l'age grace à calendar.year - int date_naissance ...

mais il y'aurait pas une methode plus simple que ça ?

merci

5 réponses

Utilisateur anonyme
17 mai 2008 à 19:14
Salut,


Bon, encore un petit coup de pouce :


// extrait d'un programme:


import java.util.GregorianCalendar;
-------
-------
-------
      //La date de naissance est supposee etre dans datnaiss et doit etre sous la forme jj/mm/aaaa
         System.out.println("datnaiss = " + datnaiss);
         if (datnaiss.length() != 10)
         {
         String info = "    ERREUR LONGUEUR DATE DE NAISSANCE " + datnaiss;
         javax.swing.JOptionPane.showMessageDialog(null,info);
         }         int p1 0, p2 0, p3 = 0;      // p1 = annee, p2 = mois, p3 = jour
         char c1 = datnaiss.charAt(2);
         char c2 = datnaiss.charAt(5);
         if ( (c1 != '/') || (c2 != '/') )
         {
         String info = "    ERREUR DATE DE NAISSANCE " + datnaiss;
         javax.swing.JOptionPane.showMessageDialog(null,info}
     
         String mano = datnaiss.substring(0,2);
         p3 = Integer.parseInt(mano);      // jj
         mano = datnaiss.substring(3,5);
         p2 = Integer.parseInt(mano);      // mm
         p2--;
         mano = datnaiss.substring(6,10);
         p1 = Integer.parseInt(mano);      // aaaa


         int nbj_mdn;                      // nombre de jour mois de naissance
         int annee_dn;                     // annee de naissance
         int num_mois_dn;                  // numero du mois de naissance
         int jour_dn;                      // jour de naissance
         int num_jour_dn;                  // numero du jour de naissance
         try
         {
         // on fourni la date de naissance a GregorianCalendar:
            Calendar datedenaissance = new GregorianCalendar(p1, p2, p3);
         // sans la ligne suivante, pas d'exception possible si la date est invalide (ex. p2 = 13)
            datedenaissance.setLenient(false);
             nbj_mdn datedenaissance.getActualMaximum(Calendar.DAY_OF_MONTH); // nb jours mois anni                            annee_dn datedenaissance.get(Calendar.YEAR);            num_mois_dn = datedenaissance.get(Calendar.MONTH);
            jour_dn = datedenaissance.get(Calendar.DAY_OF_MONTH);
            num_jour_dn = datedenaissance.get(Calendar.DAY_OF_WEEK);
         }        
            catch (Exception e)
                   
         {
               e.printStackTrace();
               info = e + nL1;
               avax.swing.JOptionPane.showMessageDialog(null,info);
         }
             // pour transformer le jour_dn 1 possible en "1er" (donc de int à String) ...             // ... il faut d'abord convertir int jour_dn en String Sjour_dn         String Sjour_dn = Integer.toString(jour_dn);
         if (Sjour_dn.equals("1")) Sjour_dn = "1er";


         // Date du jour:
         Calendar aujourdhui = Calendar.getInstance();
          // obtention des éléments de la date du jour
         int nbjours = aujourdhui.getActualMaximum(Calendar.DAY_OF_MONTH); // nbre jours mois en cours
         int annee = aujourdhui.get(Calendar.YEAR);
         int num_mois = aujourdhui.get(Calendar.MONTH);
         int jour = aujourdhui.get(Calendar.DAY_OF_MONTH);
         int num_jour = aujourdhui.get(Calendar.DAY_OF_WEEK);


      // l'age en annees A LA DATE ANNIVERSAIRE
         int age = aujourdhui.get(Calendar.YEAR) - datedenaissance.get(Calendar.YEAR);
         if (aujourdhui.before(datedenaissance)) age--;
-------
-------
-------


Mais il reste a calculer eventuellement le nombre de jours a ajouter au nombre d'annees.


Cordialement,



...\ Dan /...
1
Rejoignez-nous