Calcul de l'age à partir d'une date de naissance au préable de type string
Anouchka2586
Messages postés
47
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour
J'aimerais calculer à partir de la date de naissance. J'ai mis la dateNaissance en String. Voici ma fonction
Merci
J'aimerais calculer à partir de la date de naissance. J'ai mis la dateNaissance en String. Voici ma fonction
public int age(){
int age = 0;
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate localDate = LocalDate.parse(dateNaissance, formatter);
return age;
}
Merci
1 réponse
-
Bonjour,
Une date c'est un point dans le temps. Un âge, c'est une distance entre deux points du temps.
Ces deux notions sont représentées respectivement par les classes LocalDate et Period :
Exemple :public static long distance(LocalDate date1, LocalDate date2, TemporalUnit unit) { return Period.between(date1, date2).get(unit); }
Pour le premier paramètre, si tu le veux à partir d'un String il faut le parser comme tu as commencé à le faire :DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d/M/yyyy"); LocalDate date1 = LocalDate.parse(dateNaissance, formatter);
Pour le deuxième paramètre, si tu veux l'âge que l'on a aujourd'hui, il faut utiliser now() :LocalDate date2 =LocalDate.now();
Pour le troisième paramètre, on va dire que tu veux l'âge en années :TemporalUnit unit = ChronoUnit.YEARS;
Donc au final cela donne :public static long age(String dateNaissance) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d/M/yyyy"); LocalDate date1 = LocalDate.parse(dateNaissance, formatter); LocalDate date2 = LocalDate.now(); TemporalUnit unit = ChronoUnit.YEARS; return Period.between(date1, date2).get(unit); }