Javaで年齢を計算する

1概要

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

すべての場合において、誕生日と現在の日付を入力として取り、計算された年齢を年数で返します。

2 Java 8 を使用する

Java 8はリンクを導入しました:/migrating-to-java-8-date-time-api[新しいDate-Time API]。主にJoda-Timeライブラリを基にして、日付と時刻を処理します。

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

public int calculateAge(
  LocalDate birthDate,
  LocalDate currentDate) {
   //validate inputs ...
    return Period.between(birthDate, currentDate).getYears();
}
  • LocalDate は、日付を表しているだけなので、ここでは役に立ちます。日付と時刻の両方を表します。 LocalDate.now() は現在の日付を教えてくれます。

そしてhttps://docs.oracle.com/javase/8/docs/api/java/time/Period.html[ Period ]は、年、月、日の期間について考える必要がある場合に役立ちます。

  • 秒数で言うと、もっと正確な年齢を取得したい場合は、それぞれ LocalDateTime Duration を見てみましょう(そしておそらく __long __inteadを返します)。

3 Joda-Time を使う

Java 8がオプションではない場合でも、日付と時刻の事実上の標準であるhttp://www.joda.org/joda-time/[Joda-Time]** から同じ種類の結果を得ることができます。 Java 8より前の世界での操作。

Joda-Time依存関係 をpomに追加してください。

<dependency>
  <groupId>joda-time</groupId>
  <artifactId>joda-time</artifactId>
  <version>2.10</version>
</dependency>

そして、私たちは年齢を計算するために同様の方法を書くことができます。今回はhttp://www.joda.org/joda-time/apidocs/index.html[ LocalDate ]とhttp://joda-time.sourceforge.net/を使ってください。 apidocs/org/joda/time/Years.html[ ]fromリンク:/joda-time[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 Java 7 を使う

Java 7に専用の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 オブジェクトを整数に変換し、それらの違いを見つけます。 まだ8000年後にJava 7が使用されていない限り 、このアプローチは有効です。

5結論

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

Java 8のデータ時間サポートの詳細については、次のリンクをチェックしてください。

そしていつものように、これらのスニペットの完全なコードはhttps://github.com/eugenp/tutorials/tree/master/java-dates[GitHubに載っています]。