Calculer l’âge en Java

Calculer l'âge en Java

1. Vue d'ensemble

Dans ce rapide didacticiel, 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. Utiliser Java 8

Java 8 a introduita new Date-Time API pour travailler avec les dates et les heures, largement basé sur la bibliothèque Joda-Time.

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

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

LocalDate is helpful here because represents just a date, par rapport à la classeDate de Java, qui représente à la fois une date et une heure. LocalDate.now() peut nous donner la date actuelle.

EtPeriod est utile lorsque nous devons penser à des périodes de temps 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 etDuration, respectivement (et peut-être retourner unlong instead).

3. Utiliser Joda-Time

Si Java 8 n’est pas une option,we can still get the same kind of result from Joda-Time, une norme de facto pour les opérations date-heure dans le monde pré-Java 8.

Nous devons ajouter lesJoda-Time dependency à notre pom:


  joda-time
  joda-time
  2.10

Et puis nous pouvons écrire une méthode similaire pour calculer l'âge, cette fois en utilisantLocalDate etYears deJoda-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. Utiliser Java 7

Sans une API dédiée dans Java 7, il ne nous reste plus qu'à lancer la nôtre. Il existe donc plusieurs approches.

À titre d'exemple, nous pouvons utiliserjava.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 objetsbirthDate etcurrentDate donnés en nombres entiers et trouvons la différence entre eux, etso long as we aren’t still on Java 7 in 8000 years, cette approche devrait fonctionner jusque-là.

5. Conclusion

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

Pour en savoir plus sur la prise en charge du temps de données de Java 8, consultezour Java 8 date-time intro.

Et comme toujours, le code complet de ces extraits peut être trouvéover on GitHub.