Calcul de l'age à partir d'une date de naissance au préable de type string

Fermé
Anouchka2586 Messages postés 51 Date d'inscription vendredi 10 octobre 2014 Statut Membre Dernière intervention 20 mars 2022 - 24 juil. 2020 à 18:12
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 24 juil. 2020 à 18:51
Bonjour
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

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
24 juil. 2020 à 18:51
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);
}
0