日数や時間を求めるのって、意外と面倒です。
もちろん旧来の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メソッドを呼ぶことで求めたい単位での差異が取得できます。
ただし、サンプルの下側にある「時間の差を求める」のとおり、単位未満では端数が切り捨てされてしまうので注意が必要です。