日数や時間を求めるのって、意外と面倒です。
 もちろん旧来のDate,Calenderでもできるわけですが、今回はChronoUnitを使ってみます。
ChronoUnitを使って、日数、時間の差を求めるサンプル
ChronoUnitを使って、2つの日付から日数の差を、2つの日時から時間の差を求めてみます。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import java.time.LocalDate; import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; public class DateDiffTest {     public static void main(String[] args) {         //日付の差を求める         LocalDate date1 = LocalDate.of(2023, 4, 1);         LocalDate date2 = LocalDate.of(2023, 4, 8);         long daysBetween = ChronoUnit.DAYS.between(date1, date2);         System.out.println("日数は... " + daysBetween + "日");         //時間の差を求める         LocalDateTime dateTime1 = LocalDateTime.of(2023, 4, 1, 9, 0);         LocalDateTime dateTime2 = LocalDateTime.of(2023, 4, 2, 10, 59);         long hoursBetween = ChronoUnit.HOURS.between(dateTime1, dateTime2);         System.out.println("時間は..." + hoursBetween + "時間");     } } | 
実行結果
2つの日付から求めた日数の差と、2つの日時から求めた時間の差が出力されます。
| 1 2 | 日数は... 7日 時間は...25時間 | 
サンプルの解説
ChronoUnitはenumなわけですが、求めたい単位(ChronoUnit.DAYSなど)を選んでから、betweenメソッドを呼ぶことで求めたい単位での差異が取得できます。
 ただし、サンプルの下側にある「時間の差を求める」のとおり、単位未満では端数が切り捨てされてしまうので注意が必要です。










