当サイトは、アフィリエイト広告を利用しています
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); // trueboolean d2 = date1.isBefore(date2);System.out.println(d2); // falseboolean d3 = date1.isEqual(date2);System.out.println(d3); // falseLocalDate date3 = LocalDate.of(2020,8,3);LocalDate date4 = LocalDate.of(2020,8,3);boolean d4 = date3.isEqual(date4);System.out.println(d4); // true}}
isAfterメソッドはd1がd2より後の場合にtrueを返す。 ※同日はfalseになる
isBeforeメソッドはd1がd2より前の場合にtrueを返す。 ※同日はfalseになる
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);// 対象日付1LocalDate targetDate1 = LocalDate.of(2021,7,30);// 対象日付2LocalDate 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で返却される。
下記を参考にさせて頂きました。
日付の前や後の判定や期間内かの判定は使うことが多く
毎回、調べていたので整理してみました。
今までは、あまりよく知らなくても使えていたのですが
今後は理解して上で使うので応用をしていきたい