1. 概要

このチュートリアルでは、特定の年がJavaのうるう年であるかどうかを判断するいくつかの方法を示します。

うるう年とは、余りなしで4と400で割り切れる年です。 したがって、100で割り切れるが、400で割り切れない年は、4で割り切れる場合でも、資格がありません。

2. Pre- Java -8CalendarAPIの使用

Java 1.1以降、 GregorianCalendar クラスを使用すると、年がうるう年かどうかを確認できます。

public boolean isLeapYear(int year);

ご想像のとおり、このメソッドは、指定された年がうるう年の場合は true を返し、うるう年でない場合はfalseを返します。

紀元前(キリストの前)の年は負の値として渡す必要があり、1 –として計算されます。 たとえば、紀元前3年は、1 – 3 = -2であるため、-2として表されます。

3. Java8+日付/時刻APIの使用

Java 8では、javatimeパッケージが導入され、 Date and TimeAPIが大幅に改善されました。

javatimeパッケージのクラスYearには、指定された年がうるう年であるかどうかを確認するstaticメソッドがあります。

public static boolean isLeap(long year);

また、同じことを行うためのインスタンスメソッドもあります。

public boolean isLeap();

4. Joda-TimeAPIの使用

Joda-Time API は、日付と時刻のユーティリティ用のJavaプロジェクトの中で最も使用されているサードパーティライブラリの1つです。 Java 8以降、 Joda-Time GitHubソースリポジトリに記載されているように、このライブラリは保守可能な状態になっています。

Joda-Timeでうるう年を見つけるための事前定義されたAPIメソッドはありません。 ただし、LocalDateクラスとDaysクラスを使用して、うるう年を確認できます。

LocalDate localDate = new LocalDate(2020, 1, 31);
int numberOfDays = Days.daysBetween(localDate, localDate.plusYears(1)).getDays();

boolean isLeapYear = (numberOfDays > 365) ? true : false;

5. 結論

このチュートリアルでは、うるう年とは何か、うるう年を見つけるためのロジック、およびうるう年をチェックするために使用できるいくつかのJavaAPIについて説明しました。

いつものように、コードスニペットはGitHubで見つけることができます。