Javaで年齢を計算する

Javaで年齢を計算する

1. 概要

このクイックチュートリアルでは、Java 8、Java 7、およびJoda-Timeライブラリを使用して年齢を計算する方法を説明します。

いずれの場合も、生年月日と現在の日付を入力として受け取り、計算された年齢を年数で返します。

2. Java 8の使い方

Java 8では、主にJoda-Timeライブラリに基づいて、日付と時刻を操作するためのa new Date-Time APIが導入されました。

Java 8では、生年月日と現在の日付にjava.time.LocalDateを使用してから、Periodを使用して年の差を計算できます。

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

日付と時刻の両方を表すJavaのDateクラスと比較したLocalDate is helpful here because represents just a date,LocalDate.now()は、現在の日付を示します。

また、Periodは、年、月、日の期間について考える必要がある場合に役立ちます。

より正確な年齢、たとえば秒単位で取得したい場合は、それぞれLocalDateTimeDurationを調べます(代わりにlong を返します)。

3. Joda-Timeを使用する

Java 8がオプションでない場合、we can still get the same kind of result from Joda-Timeは、Java8より前の世界での日時操作の事実上の標準です。

pomにJoda-Time dependencyを追加する必要があります。


  joda-time
  joda-time
  2.10

次に、同様の方法を記述して年齢を計算できます。今回は、Joda-TimeからLocalDateYearsを使用します。

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. Java 7を使用する

Java 7に専用のAPIがなければ、独自のAPIを導入する必要があります。そのため、いくつかのアプローチがあります。

一例として、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;
}

ここでは、指定されたbirthDateオブジェクトとcurrentDateオブジェクトを整数に変換し、それらとso long as we aren’t still on Java 7 in 8000 yearsの違いを見つけます。このアプローチは、それまでは機能するはずです。

5. 結論

この記事では、Java 8、Java 7、およびJoda-Timeライブラリーを使用して年齢を簡単に計算する方法を示しました。

Java 8のデータ時間サポートの詳細については、our Java 8 date-time introを確認してください。

そしていつものように、これらのスニペットの完全なコードはover on GitHubにあります。