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

Anouchka2586 Messages postés 54 Statut Membre -  
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
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 19031 Statut Modérateur 3 020
 
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