カテゴリ: Java 更新日: 2026/01/13

JavaのLocalDateクラスのisLeapYearメソッド完全ガイド!うるう年を簡単に判定する方法

LocalDateのisLeapYearメソッド
LocalDateのisLeapYearメソッド

先生と生徒の会話形式で理解しよう

生徒

「Javaでうるう年かどうかを判定する方法ってありますか?」

先生

「もちろんありますよ。java.timeパッケージのLocalDateクラスにあるisLeapYearメソッドを使えば簡単に判定できます。」

生徒

「自分で計算しなくてもいいんですか?」

先生

「はい。Javaが自動でうるう年のルールに従って判定してくれるので、とても便利ですよ。」

1. java.timeパッケージとは?

1. java.timeパッケージとは?
1. java.timeパッケージとは?

Javaにはjava.timeという便利な日付と時間を扱うパッケージがあります。このパッケージはJava8で導入され、古いjava.util.DateCalendarの問題を解決するために設計されました。

java.timeパッケージには、LocalDateLocalTimeLocalDateTimeといった日付や時間に関する多くのクラスが用意されており、安全で直感的に使えるのが特徴です。

2. LocalDateクラスとは?

2. LocalDateクラスとは?
2. LocalDateクラスとは?

LocalDateクラスは、日付だけを扱うためのクラスで、時刻の情報を持ちません。つまり、「2024年2月29日」や「2025年12月1日」など、年月日だけの情報を管理するのに使います。

時間やタイムゾーンに関係なく日付の計算や比較をしたいときにLocalDateはとても便利です。うるう年かどうかの判定も、このクラスのメソッドで簡単に行えます。

3. isLeapYearメソッドとは?

3. isLeapYearメソッドとは?
3. isLeapYearメソッドとは?

isLeapYearメソッドは、LocalDateインスタンスが属する年がうるう年かどうかを判定するメソッドです。戻り値はbooleanで、うるう年であればtrue、そうでなければfalseを返します。

このメソッドを使えば、自分でうるう年の計算(4年に1度、100年に1度は除外、400年に1度はうるう年など)をしなくても済みます。

4. isLeapYearメソッドの基本的な使い方

4. isLeapYearメソッドの基本的な使い方
4. isLeapYearメソッドの基本的な使い方

以下はisLeapYearメソッドの基本的な使用例です。年を指定してLocalDateを生成し、その年がうるう年かどうかを判定しています。


import java.time.LocalDate;

public class LeapYearCheck {
    public static void main(String[] args) {
        LocalDate date = LocalDate.of(2024, 1, 1);
        boolean isLeap = date.isLeapYear();
        System.out.println("2024年はうるう年? " + isLeap);
    }
}

2024年はうるう年? true

この例では2024年を使ってLocalDateのインスタンスを作成し、isLeapYearでうるう年かどうかを確認しています。

5. うるう年とは?Javaにおけるうるう年の判定ルール

5. うるう年とは?Javaにおけるうるう年の判定ルール
5. うるう年とは?Javaにおけるうるう年の判定ルール

うるう年は「4年ごと」に発生しますが、例外として「100で割り切れる年はうるう年ではない」「ただし400で割り切れる年はうるう年」といったルールがあります。

たとえば、以下の年はうるう年です:

  • 2024年(4で割り切れる)
  • 2000年(400で割り切れる)

逆に以下の年はうるう年ではありません:

  • 1900年(100で割り切れるが400では割り切れない)
  • 2023年(4で割り切れない)

これらの複雑なルールもisLeapYearメソッドを使えば自動で判定してくれます。

6. 実用例:カレンダーアプリでうるう年かチェックする

6. 実用例:カレンダーアプリでうるう年かチェックする
6. 実用例:カレンダーアプリでうるう年かチェックする

実際のアプリ開発では、特定の年がうるう年かどうかを判断して、2月29日を表示するかどうかを決定する場面があります。


import java.time.LocalDate;
import java.util.Scanner;

public class LeapYearInput {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("年を入力してください:");
        int year = scanner.nextInt();

        LocalDate date = LocalDate.of(year, 1, 1);
        if (date.isLeapYear()) {
            System.out.println(year + "年はうるう年です。");
        } else {
            System.out.println(year + "年はうるう年ではありません。");
        }
    }
}

年を入力してください:2020
2020年はうるう年です。

このようにユーザーからの入力に応じて動的にうるう年かどうかを判断することも簡単にできます。

7. うるう年判定に関する補足知識

7. うるう年判定に関する補足知識
7. うるう年判定に関する補足知識

うるう年判定を使うときには、年だけでなく日付の操作にも注意が必要です。例えば、「2024年2月29日」は存在しますが、「2023年2月29日」は存在しません。無効な日付を生成しようとするとDateTimeExceptionが発生するので注意が必要です。


LocalDate invalidDate = LocalDate.of(2023, 2, 29); // 例外が発生する

そのため、日付を動的に扱う場合はisLeapYearで事前にチェックしておくと安全です。

8. isLeapYearとequalsの違いに注意

8. isLeapYearとequalsの違いに注意
8. isLeapYearとequalsの違いに注意

isLeapYearはうるう年かどうかの判定であり、equalsとは全く異なる役割を持っています。間違えてequalsで年を比較しようとすることがありますが、それではうるう年かどうかは判定できません。

年の判定はisLeapYear、日付の一致はequalsまたはisEqualと、使い分けることが大切です。

カテゴリの一覧へ
新着記事
Javaのパッケージと修飾子を完全ガイド!初心者でもわかるimport文とアクセス制御
JavaのListインターフェースを完全ガイド!初心者でもわかるリスト操作
JavaのSimpleDateFormatのparseメソッドの使い方を完全ガイド!初心者でもわかる日付文字列の解析
Javaのインターフェースを完全ガイド!初心者でもわかる使い方と実装方法
人気記事
No.1
Java&Spring記事人気No1
JavaのIntegerクラスの使い方を完全ガイド!初心者でもわかる整数操作
No.2
Java&Spring記事人気No2
Javaのラムダ式で配列を扱う!Arrays.streamの基本と注意点を初心者向けに解説
No.3
Java&Spring記事人気No3
JavaのRuntimeExceptionを完全解説!初心者でもわかるjava.langパッケージの基礎
No.4
Java&Spring記事人気No4
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.5
Java&Spring記事人気No5
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.6
Java&Spring記事人気No6
JavaのBigDecimalクラスcompareToメソッド完全ガイド!初心者でもわかる大小比較の基本
No.7
Java&Spring記事人気No7
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介
No.8
Java&Spring記事人気No8
JSPでCSSやJSを読み込む基本!外部ファイルのパス指定に注意しよう