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は、年、月、日の期間について考える必要がある場合に役立ちます。
より正確な年齢、たとえば秒単位で取得したい場合は、それぞれLocalDateTimeとDurationを調べます(代わりに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
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にあります。