Maison >Java >javaDidacticiel >Comment puis-je calculer de manière fiable l'âge en années à l'aide de Java ?

Comment puis-je calculer de manière fiable l'âge en années à l'aide de Java ?

DDD
DDDoriginal
2024-12-18 11:16:11289parcourir

How Can I Reliably Calculate Age in Years Using Java?

Méthode Java pour calculer l'âge

Problème :

Développer une méthode Java qui renvoie un âge en années sous forme d'entier . La méthode prend un objet Date représentant la date de naissance.

Mise en œuvre actuelle :

public int getAge() {
    long ageInMillis = new Date().getTime() - getBirthDate().getTime();

    Date age = new Date(ageInMillis);

    return age.getYear();
}

Limitations :

  • La méthode getYear() est obsolète.
  • La précision de la méthode actuelle est discutable sans unité tests.

Solution améliorée avec JDK 8 :

JDK 8 introduit une solution raffinée utilisant la classe LocalDate :

public class AgeCalculator {

    public static int calculateAge(LocalDate birthDate, LocalDate currentDate) {
        if ((birthDate != null) & (currentDate != null)) {
            return Period.between(birthDate, currentDate).getYears();
        } else {
            return 0;
        }
    }
}

JUnité Test :

public class AgeCalculatorTest {

    @Test
    public void testCalculateAge_Success() {
        // setup
        LocalDate birthDate = LocalDate.of(1961, 5, 17);
        // exercise
        int actual = AgeCalculator.calculateAge(birthDate, LocalDate.of(2016, 7, 12));
        // assert
        Assert.assertEquals(55, actual);
    }
}

Recommandation :

Mettez à niveau vers JDK 8 pour une solution améliorée et fiable de calcul de l'âge.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn