カテゴリ: 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.DateやCalendarの問題を解決するために設計されました。

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

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と、使い分けることが大切です。

生成AIを基礎から学びたい方へ

ChatGPTなどの生成AIをこれから学びたい方に向けて、AIスキルアカデミーの口コミ・評判、料金、無料セミナーの内容を詳しくまとめています。

AIスキルアカデミーの口コミ・評判を詳しく見る
カテゴリの一覧へ
新着記事
New1
Java
JavaのassertFalseとは?JUnit5のAssertionsクラスを初心者向けにわかりやすく解説
新規投稿
New2
Thymeleaf
ThymeleafでDBから取得したデータを編集フォームの初期値にセットする方法!Entity連携を初心者向けに解説
新規投稿
New3
Spring
JavaのSpringで使う@FutureOrPresentアノテーションを完全ガイド!初心者でもわかる日付バリデーション
新規投稿
New4
Java
JavaのLocalDateクラスのgetMonthValueメソッド完全ガイド!初心者でもわかる数値で月を取得する方法
新規投稿
人気記事
No.1
Java&Spring記事人気No1
Servlet
JavaサーブレットのdoPostメソッドとは?初心者向けにやさしく解説!
No.2
Java&Spring記事人気No2
Servlet
JavaのHttpServletResponseクラスを初心者向けに徹底解説!
No.3
Java&Spring記事人気No3
Servlet
JavaのHttpServletRequestWrapperとgetSessionメソッドの使い方を徹底解説!初心者向けServletのセッション管理入門
No.4
Java&Spring記事人気No4
Servlet
JavaのServletExceptionクラスを初心者向けに徹底解説!
No.5
Java&Spring記事人気No5
Servlet
JavaのHttpSessionインターフェースとgetSessionContextメソッドを徹底解説!初心者でもわかるセッション管理の基本
No.6
Java&Spring記事人気No6
Java
JavaのStringクラスとlengthメソッドを完全解説!初心者でも理解できる文字列の長さ取得の使い方
No.7
Java&Spring記事人気No7
Servlet
JavaのHttpSessionAttributeListenerとattributeRemovedメソッドの使い方を徹底解説!初心者でもわかるセッション属性の削除と監視
No.8
Java&Spring記事人気No8
Java
Javaのクラスとインスタンス化、コンストラクタの使い方完全ガイド!初心者でもわかるオブジェクト指向の基礎