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

Anouchka2586 Messages postés 50 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   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