Calculer l'âge en Java

1. Vue d'ensemble

Dans ce rapide tutoriel, nous verrons comment calculer l'âge à l'aide des bibliothèques Java 8, Java 7 et Joda-Time.

Dans tous les cas, nous prendrons la date de naissance et la date du jour comme entrée et renverrons l'âge calculé en années.

2. Utilisation de Java 8

Java 8 a introduit une nouvelle API Date-Heure pour travailler avec les dates et les heures, largement basée sur la bibliothèque Joda-Time.

Dans Java 8, nous pouvons utiliser java.time.LocalDate pour notre date de naissance et notre date actuelle, puis utiliser Period pour calculer leur différence en années:

public int calculateAge( LocalDate birthDate, LocalDate currentDate) { // validate inputs ... return Period.between(birthDate, currentDate).getYears(); }

LocalDate est utile ici car il ne représente qu'une date, par rapport à laclasse Date de Java, qui représente à la fois une date et une heure. LocalDate.now () peut nous donner la date actuelle.

Et la période est utile lorsque nous devons penser à des périodes en années, mois et jours.

Si nous voulions obtenir un âge plus exact, disons en secondes, alors nous voudrions jeter un coup d'œil à LocalDateTime et Duration , respectivement (et peut-être renvoyer un long à la place).

3. Utilisation de Joda-Time

Si Java 8 n'est pas une option, nous pouvons toujours obtenir le même type de résultat de Joda-Time , un standard de facto pour les opérations date-heure dans le monde pré-Java 8.

Nous devons ajouter la dépendance Joda-Time à notre pom:

 joda-time joda-time 2.10 

Et puis nous pouvons écrire une méthode similaire pour calculer l'âge, cette fois en utilisant LocalDate et Years from Joda-Time:

public int calculateAgeWithJodaTime( org.joda.time.LocalDate birthDate, org.joda.time.LocalDate currentDate) { // validate inputs ... Years age = Years.yearsBetween(birthDate, currentDate); return age.getYears(); }

4. Utilisation de Java 7

Sans une API dédiée dans Java 7, il ne nous reste plus qu'à déployer la nôtre, et il existe donc de nombreuses approches.

À titre d'exemple, nous pouvons utiliser java.util.Date :

public int calculateAgeWithJava7( Date birthDate, Date currentDate) { // validate inputs ... DateFormat formatter = new SimpleDateFormat("yyyyMMdd"); int d1 = Integer.parseInt(formatter.format(birthDate)); int d2 = Integer.parseInt(formatter.format(currentDate)); int age = (d2 - d1) / 10000; return age; }

Ici, nous convertissons les objets birthDate et currentDate donnés en entiers et trouvons la différence entre eux, et tant que nous ne sommes pas encore sur Java 7 dans 8000 ans , cette approche devrait fonctionner jusque-là.

5. Conclusion

Dans cet article, nous avons montré comment calculer facilement l'âge à l'aide des bibliothèques Java 8, Java 7 et Joda-Time.

Pour en savoir plus sur la prise en charge de l'heure des données de Java 8, consultez notre introduction sur la date et l'heure de Java 8.

Et comme toujours, le code complet de ces extraits est disponible sur GitHub.