Comment compter l'age à partir d'une date de naissance ?
sikove
Messages postés90Date d'inscriptionlundi 17 mars 2008StatutMembreDernière intervention31 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 ?
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.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013129 17 mai 2008 à 07:08
Salut,
Ben déjà pour récupèrer une Date avec le texte saisit (et vérifier le format en outre), utilise un SimpleDateFormat.
______________________________________
DarK Sidious