1. ホーム
  2. java

[解決済み] Javaで誰かの年齢を計算するにはどうしたらいいですか?

2022-04-25 08:36:38

質問内容

Javaメソッドで年齢をintで返したい。 今あるのは以下のようなもので、getBirthDate()はDateオブジェクト(生年月日付き)を返します。)

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

    Date age = new Date(ageInMillis);

    return age.getYear();
}

しかし、getYear() は非推奨なので、もっと良い方法があるのでは?ユニットテストが(まだ)行われていないので、これが正しく動作するかどうかさえもわかりません。

どのように解決しますか?

JDK 8では、これを簡単かつエレガントに行うことができます。

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テスト。

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);
    }
}

それ以前のバージョンはすべてサポートが終了しているため、現在では誰もがJDK 8を使用しているはずです。