当サイトは、アフィリエイト広告を利用しています

【java】二つの日付の比較判定や差の算出方法

作成日:2022月07月23日
更新日:2024年03月28日

javaのLocalDateクラスを使って、日付の比較判定を行う方法と
二つの日付の差を算出方法をメモ。

LocalDateクラスの基本の使い方は下記に載せてます!

日付を比較する

LocalDateクラスのメソッドを使って日付を比較する

日付の比較
import java.util.*;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) throws Exception {
LocalDate date1 = LocalDate.of(2020,8,3);
LocalDate date2 = LocalDate.of(2020,7,30);
boolean d1 = date1.isAfter(date2);
System.out.println(d1); // true
boolean d2 = date1.isBefore(date2);
System.out.println(d2); // false
boolean d3 = date1.isEqual(date2);
System.out.println(d3); // false
LocalDate date3 = LocalDate.of(2020,8,3);
LocalDate date4 = LocalDate.of(2020,8,3);
boolean d4 = date3.isEqual(date4);
System.out.println(d4); // true
}
}

d1 isAfter(d2)

isAfterメソッドはd1がd2より後の場合にtrueを返す。 ※同日はfalseになる

d1 isBefore(d2)

isBeforeメソッドはd1がd2より前の場合にtrueを返す。 ※同日はfalseになる

d1 isEqual(d2)

isEqualメソッドはd1とd2が同日場合にtrueを返す。

指定した日付が対象期間内かチェックする方法

与えられたある2つの期間(日付)に対して、ある日付が含む又は含まれないかどうかを判定したい場合など実装サンプルを書いてみる

対象日付の期間内チェック
import java.util.*;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
public class Main {
public static void main(String[] args) throws Exception {
// 開始日付
LocalDate startDate = LocalDate.of(2020,1,1);
//終了日付
LocalDate endDate = LocalDate.of(2022,12,31);
// 対象日付1
LocalDate targetDate1 = LocalDate.of(2021,7,30);
// 対象日付2
LocalDate targetDate2 = LocalDate.of(2019,7,30);
// 対象日付1の判定
System.out.println(between(targetDate1,startDate,endDate));
// 対象日付2の判定
System.out.println(between(targetDate2,startDate,endDate));
}
// 対象日付の期間内チェック関数
public static boolean between(LocalDate targetDate,LocalDate startDate,LocalDate endDate){
return !(startDate.isAfter(targetDate) || endDate.isBefore(targetDate));
}
}

動作確認する

対象日付の期間内チェック

参考

下記を参考に確認させていただきまた。

二つの日付の差(期間)を算出する

二つの期間の差を出したい場合はjava8のChronoUnitを使う

二つの日付の差を算出する
import java.util.*;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
public class Main {
public static void main(String[] args) throws Exception {
LocalDate date1 = LocalDate.of(2020,8,3);
LocalDate date2 = LocalDate.of(2022,7,30);
// 日数計算
long localDiffDays1 = ChronoUnit.DAYS.between(date1, date2);
System.out.println("日数:" + localDiffDays1);
// 月数計算
long localDiffDays2 = ChronoUnit.MONTHS.between(date1, date2);
System.out.println("月数:" + localDiffDays2);
// 年数計算
long localDiffDays3 = ChronoUnit.YEARS.between(date1, date2);
System.out.println("年数:" + localDiffDays3);
}
}
// 実行結果
// 日数:726
// 月数:23
// 年数:1

ChronoUnitを使えばLocalDateクラスのオブジェクトを比較することができる。
戻り値はLongで返却される。

動作を確認してみる

【java8】二つの日付の差を算出する

参考

下記を参考にさせて頂きました。

まとめ

日付の前や後の判定や期間内かの判定は使うことが多く
毎回、調べていたので整理してみました。
今までは、あまりよく知らなくても使えていたのですが
今後は理解して上で使うので応用をしていきたい

新着記事

タグ別一覧
top