カテゴリ: Java 更新日: 2026/05/06

JavaのChronoUnit.DAYSとbetweenメソッドの使い方を完全解説!日数計算を初心者向けにわかりやすく説明

ChronoUnit.DAYSのbetweenメソッド
ChronoUnit.DAYSのbetweenメソッド

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

生徒

「Javaで二つの日付の日数差を簡単に計算する方法ってありますか?」

先生

「Javaでは、ChronoUnit.DAYSbetweenメソッドを使うことで、開始日と終了日の日数差を簡単に取得できます。」

生徒

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

先生

「はい。Javaの日時APIを使えば、うるう年なども考慮して正確に日数計算できます。」

生徒

「初心者でも使いやすいですか?」

先生

「もちろんです。シンプルなコードで書けるので、Java初心者にもおすすめです。」

1. ChronoUnit.DAYSとは?

「1. ChronoUnit.DAYSとは?」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

1. ChronoUnit.DAYSとは?
1. ChronoUnit.DAYSとは?

ChronoUnit.DAYSは、 Javaの日時APIであるjava.timeパッケージに含まれている機能です。 主に「日数差」を取得するときに利用されます。

Java初心者の方は、 日付計算を自分で実装しようとして複雑な処理を書いてしまうことがあります。 しかし、ChronoUnit.DAYSを利用すれば、 二つの日付の差を簡単に計算できます。

Javaの業務システムでは、 契約日数、 利用日数、 予約期間、 経過日数などを求める場面が非常に多くあります。

ポイント
ChronoUnit.DAYSは「何日差があるか」を取得するための定数です。

Javaの日付計算では、 古いDateクラスではなく、 LocalDateChronoUnitを組み合わせる方法が推奨されています。

2. betweenメソッドとは?

2. betweenメソッドとは?
2. betweenメソッドとは?

betweenメソッドは、 二つの日付や時間の差分を取得するためのメソッドです。

Javaで日付差分を求める場合、 非常によく利用される便利なメソッドです。

基本構文は次のようになります。


ChronoUnit.DAYS.between(開始日, 終了日);

このコードを実行すると、 開始日から終了日までの日数差を取得できます。

Javaでは、 日数だけではなく、 月数、 年数、 時間、 分なども取得可能です。

主な単位
DAYS:日数
MONTHS:月数
YEARS:年数
HOURS:時間

3. 日数差を取得する基本サンプル

3. 日数差を取得する基本サンプル
3. 日数差を取得する基本サンプル

まずは、 Javaで二つの日付の日数差を取得する基本サンプルを見てみましょう。


import java.time.LocalDate;
import java.time.temporal.ChronoUnit;

public class DaysExample {
    public static void main(String[] args) {

        LocalDate startDate = LocalDate.of(2025, 1, 1);
        LocalDate endDate = LocalDate.of(2025, 1, 15);

        long days = ChronoUnit.DAYS.between(startDate, endDate);

        System.out.println("日数差:" + days);
    }
}

このプログラムでは、 二つの日付を比較して日数差を取得しています。

LocalDateは、 年月日を扱うためのJavaクラスです。 時間情報を含まないため、 日付計算に最適です。


日数差:14

Javaの日時計算では、 この書き方が非常によく利用されています。

4. 現在の日付との差を取得する方法

「4. 現在の日付との差を取得する方法」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

4. 現在の日付との差を取得する方法
4. 現在の日付との差を取得する方法

Javaでは、 現在の日付との差分を取得したい場面も多くあります。

例えば、 会員登録から何日経過したかを計算したい場合などに利用されます。


import java.time.LocalDate;
import java.time.temporal.ChronoUnit;

public class ElapsedDaysExample {
    public static void main(String[] args) {

        LocalDate registerDate = LocalDate.of(2025, 4, 1);
        LocalDate today = LocalDate.now();

        long days = ChronoUnit.DAYS.between(registerDate, today);

        System.out.println("経過日数:" + days);
    }
}

LocalDate.now()を利用すると、 現在の日付を取得できます。

Javaの業務システムでは、 現在日付との差分計算は頻繁に利用されます。


経過日数:35

5. マイナス値になるケース

5. マイナス値になるケース
5. マイナス値になるケース

betweenメソッドでは、 開始日と終了日の順番に注意する必要があります。

開始日が終了日より未来の場合、 結果はマイナス値になります。


import java.time.LocalDate;
import java.time.temporal.ChronoUnit;

public class MinusDaysExample {
    public static void main(String[] args) {

        LocalDate futureDate = LocalDate.of(2026, 1, 1);
        LocalDate today = LocalDate.now();

        long days = ChronoUnit.DAYS.between(futureDate, today);

        System.out.println("日数差:" + days);
    }
}

日数差:-240

Javaで日付計算をするときは、 開始日と終了日の順番を意識することが重要です。

注意
betweenメソッドは開始日から終了日までを計算します。
順番が逆になるとマイナス値になります。

6. DAYS以外にも利用できる単位

6. DAYS以外にも利用できる単位
6. DAYS以外にも利用できる単位

ChronoUnitには、 DAYS以外にもさまざまな単位があります。

Javaの日時APIでは、 用途に応じて単位を使い分けることが重要です。


import java.time.LocalDate;
import java.time.temporal.ChronoUnit;

public class MultipleUnitExample {
    public static void main(String[] args) {

        LocalDate startDate = LocalDate.of(2024, 1, 1);
        LocalDate endDate = LocalDate.of(2025, 5, 1);

        long years = ChronoUnit.YEARS.between(startDate, endDate);
        long months = ChronoUnit.MONTHS.between(startDate, endDate);
        long days = ChronoUnit.DAYS.between(startDate, endDate);

        System.out.println("年数差:" + years);
        System.out.println("月数差:" + months);
        System.out.println("日数差:" + days);
    }
}

年数差:1
月数差:16
日数差:486

Javaでは、 同じ日付でも取得する単位によって結果が変わります。

単位 内容
DAYS 日数差を取得
MONTHS 月数差を取得
YEARS 年数差を取得
HOURS 時間差を取得

7. LocalDateと組み合わせる理由

「7. LocalDateと組み合わせる理由」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

7. LocalDateと組み合わせる理由
7. LocalDateと組み合わせる理由

ChronoUnit.DAYSは、 主にLocalDateと組み合わせて利用されます。

LocalDateは、 Javaで日付のみを扱うためのクラスです。 時間情報を含まないため、 シンプルに日付計算できます。

Java初心者の方は、 古いDateクラスを使ってしまうことがありますが、 現在ではLocalDateを利用する方法が一般的です。


import java.time.LocalDate;

public class LocalDateNowExample {
    public static void main(String[] args) {

        LocalDate today = LocalDate.now();

        System.out.println(today);
    }
}

2026-05-06

Javaの日付操作では、 LocalDateChronoUnitをセットで覚えると理解しやすくなります。

8. ChronoUnit.DAYSを使うときの注意点

8. ChronoUnit.DAYSを使うときの注意点
8. ChronoUnit.DAYSを使うときの注意点

JavaでChronoUnit.DAYSを使う場合、 いくつか注意点があります。

一つ目は、 開始日と終了日の順番です。 順番を間違えるとマイナス値になります。

二つ目は、 日付のみを扱いたい場合は、 LocalDateを使うことです。

時刻まで扱いたい場合は、 LocalDateTimeを使う必要があります。

三つ目は、 Java標準APIを利用することで、 うるう年なども自動的に考慮される点です。

初心者向けポイント
Javaの日数計算では、 ChronoUnit.DAYSとbetweenメソッドを使うことで、 シンプルかつ安全に実装できます。

Javaの日時計算は、 会員管理システム、 予約システム、 勤怠管理システムなど、 さまざまな業務システムで利用されています。

そのため、 ChronoUnit.DAYSbetweenメソッドは、 Java初心者の方でも早めに覚えておきたい重要な知識です。

まとめ

まとめ
まとめ

今回は、 JavaのChronoUnit.DAYSbetweenメソッドを使った日数計算について詳しく学びました。

Java初心者の方は、 日付の差分計算を難しく感じることがありますが、 Javaの日時APIを利用することで、 非常にシンプルかつ安全に実装できます。

特に、 ChronoUnit.DAYS.betweenは、 二つの日付の差を日数単位で取得できる便利な機能です。 Javaの業務システムでは、 経過日数、 利用期間、 契約期間、 勤務日数、 予約日数などを計算する場面が数多く存在します。

そのため、 Javaの日時APIを理解しておくことは、 Javaエンジニアとして非常に重要です。

Javaでは、 古いDateクラスや Calendarクラスを利用する方法もありますが、 現在では LocalDateChronoUnitを利用する方法が推奨されています。

重要ポイント
Javaで日数差を求める場合は、 ChronoUnit.DAYSとbetweenメソッドを組み合わせることで、 簡潔で読みやすいコードを書けます。

日数計算を復習するサンプル

まずは、 Javaの日数計算を復習するサンプルプログラムを見てみましょう。


import java.time.LocalDate;
import java.time.temporal.ChronoUnit;

public class ReviewDaysExample {
    public static void main(String[] args) {

        LocalDate startDate = LocalDate.of(2025, 5, 1);
        LocalDate endDate = LocalDate.of(2025, 5, 20);

        long days = ChronoUnit.DAYS.between(startDate, endDate);

        System.out.println("日数差:" + days);
    }
}

日数差:19

このように、 Javaでは非常に短いコードで日数差を取得できます。

Java初心者の方でも、 処理内容を理解しやすい点が大きなメリットです。

betweenメソッドが便利な理由

Javaのbetweenメソッドには、 多くのメリットがあります。

メリット 内容
コードが短い 複雑な日付計算を書かなくてよい
可読性が高い 初心者でも処理内容を理解しやすい
安全性が高い Java標準APIなので安心して利用できる
実務利用が多い 業務システムで頻繁に使われる

Javaでは、 「読みやすいコードを書くこと」が非常に重要です。 ChronoUnit.DAYS.betweenを利用することで、 シンプルな日付計算を実現できます。

経過日数を取得するサンプル

Javaでは、 会員登録からの経過日数や、 注文からの経過日数などを求めることがあります。

次のサンプルでは、 登録日から現在までの経過日数を取得しています。


import java.time.LocalDate;
import java.time.temporal.ChronoUnit;

public class PassedDaysExample {
    public static void main(String[] args) {

        LocalDate registerDate = LocalDate.of(2025, 1, 1);
        LocalDate today = LocalDate.now();

        long days = ChronoUnit.DAYS.between(registerDate, today);

        System.out.println("経過日数:" + days);
    }
}

経過日数:125

JavaのWebシステムや会員管理システムでは、 このような日数計算が頻繁に登場します。

LocalDateを使うメリット

Javaの日付計算では、 LocalDateを利用することが一般的です。

LocalDateは、 年月日だけを扱うため、 シンプルに日付処理を実装できます。

時間情報を含まないため、 日数計算を行う際に非常に扱いやすい点が特徴です。


import java.time.LocalDate;

public class TodayExample {
    public static void main(String[] args) {

        LocalDate today = LocalDate.now();

        System.out.println("今日の日付:" + today);
    }
}

今日の日付:2026-05-06

Java初心者の方は、 まずLocalDateChronoUnitの基本を覚えることで、 日時処理を理解しやすくなります。

マイナス値に注意する

Javaのbetweenメソッドでは、 開始日と終了日の順番が重要です。

開始日が未来の日付になっている場合、 結果はマイナス値になります。

Javaの日付計算でよくあるミスの一つなので、 初心者の方は特に注意しましょう。

初心者向けチェックポイント

LocalDateで日付を扱う

ChronoUnit.DAYSで日数差を取得する

betweenメソッドで差分計算を行う

開始日と終了日の順番に注意する

Javaの日時APIを学ぶ重要性

Javaでは、 日付や時間を扱う処理が非常に多く存在します。

例えば、 予約管理システム、 会員管理システム、 勤怠管理システム、 ECサイト、 在庫管理システムなど、 さまざまな業務システムで日時処理が利用されています。

そのため、 Javaの日時APIを理解しておくことで、 実践的なプログラムを書けるようになります。

特に、 ChronoUnit.DAYSbetweenメソッドは、 Java初心者でも比較的理解しやすく、 実務でも利用頻度が高い重要な知識です。

Javaの日時計算を学ぶことで、 システム開発の幅も大きく広がります。

日付比較を行うサンプル

Javaでは、 日付同士を比較する処理も頻繁に利用されます。


import java.time.LocalDate;

public class CompareDateExample {
    public static void main(String[] args) {

        LocalDate date1 = LocalDate.of(2025, 5, 1);
        LocalDate date2 = LocalDate.of(2025, 5, 10);

        System.out.println(date1.isBefore(date2));
    }
}

true

このように、 Javaの日時APIを利用すると、 日付比較も簡単に実装できます。

先生と生徒の振り返り会話

生徒

「JavaのChronoUnit.DAYSを使うと、 日数差を簡単に取得できることがわかりました。」

先生

「はい。 Javaのbetweenメソッドを利用すると、 シンプルなコードで日付差分を計算できます。」

生徒

「LocalDateと組み合わせることで、 コードもかなり読みやすくなりますね。」

先生

「その通りです。 Javaの日時APIは、 可読性が高く、 実務でも非常によく利用されています。」

生徒

「日数計算だけではなく、 月数や年数も計算できるのが便利だと感じました。」

先生

「ChronoUnitには、 DAYS以外にもMONTHSやYEARSなど、 さまざまな単位があります。 用途に応じて使い分けることが重要です。」

生徒

「これからJavaで日付処理を書くときは、 ChronoUnitとbetweenメソッドを活用してみます。」

先生

「ぜひ活用してください。 Javaの日時APIを理解すると、 実践的なプログラムを効率よく作れるようになります。」

カテゴリの一覧へ
新着記事
New1
Java
JavaのThreadクラスholdsLockメソッド完全ガイド!初心者でもわかる同期とロックの確認方法
新規投稿
New2
Spring
SpringDataJPAのJPAクエリメソッド「NotIn」の使い方を完全ガイド!初心者向け解説
更新記事
New3
Spring
SpringDataJPAのJPAクエリメソッド「In」の使い方を完全ガイド!初心者向け解説
更新記事
New4
Spring
SpringDataJPAのJPAクエリメソッド「Not」の使い方を完全ガイド!初心者向け解説
更新記事
人気記事
No.1
Java&Spring記事人気No1
Spring
Spring BootとVS Codeで開発を始めよう!拡張機能・launch.json・ホットリロードを丁寧に解説
No.2
Java&Spring記事人気No2
Spring
SpringのModelクラスとaddAttributeメソッドの使い方を完全ガイド!初心者でも安心
No.3
Java&Spring記事人気No3
Spring
Spring Data JPAのfindAllメソッドの使い方を完全ガイド!検索結果をThymeleafのth:eachで表示
No.4
Java&Spring記事人気No4
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.5
Java&Spring記事人気No5
Java
JavaのIOExceptionクラス徹底解説!初心者向けファイル入出力エラー対策ガイド
No.6
Java&Spring記事人気No6
Java
JavaのExceptionクラスを完全解説!初心者でも理解できる例外処理の基本
No.7
Java&Spring記事人気No7
Spring
Spring Data JPA入門!findAll()やfindBy**()の使い方などデータベース操作の基礎を学ぶ
No.8
Java&Spring記事人気No8
Servlet
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本