В Java 8 мы можем использовать Период
, Длительность
или Хронометр
для вычисления разницы между двумя Локальными датами
или локальным временем
.
Период
для расчета разницы между двумяЛокальными датами
.Продолжительность
для вычисления разницы между двумяЛокальное время
.Хроноунит
для всего.
1. Период
package com.mkyong.java8; import java.time.LocalDate; import java.time.Period; public class JavaLocalDate { public static void main(String[] args) { LocalDate from = LocalDate.of(2020, 5, 4); LocalDate to = LocalDate.of(2020, 10, 10); Period period = Period.between(from, to); System.out.print(period.getYears() + " years,"); System.out.print(period.getMonths() + " months,"); System.out.print(period.getDays() + " days"); } }
Выход
0 years,5 months,6 days
2. Продолжительность
package com.mkyong.java8; import java.time.Duration; import java.time.LocalDateTime; public class JavaLocalDateTime { public static void main(String[] args) { LocalDateTime from = LocalDateTime.of(2020, 10, 4, 10, 20, 55); LocalDateTime to = LocalDateTime.of(2020, 10, 10, 10, 21, 1); Duration duration = Duration.between(from, to); // days between from and to System.out.println(duration.toDays() + " days"); // hours between from and to System.out.println(duration.toHours() + " hours"); // minutes between from and to System.out.println(duration.toMinutes() + " minutes"); // seconds between from and to System.out.println(duration.toSeconds() + " seconds"); System.out.println(duration.getSeconds() + " seconds"); } }
Выход
6 days 144 hours 8640 minutes 518406 seconds 518406 seconds
3. Хроноблок
package com.mkyong.java8; import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; public class JavaChronoUnit { public static void main(String[] args) { LocalDateTime from = LocalDateTime.of(2020, 10, 4, 10, 20, 55); LocalDateTime to = LocalDateTime.of(2020, 11, 10, 10, 21, 1); long years = ChronoUnit.YEARS.between(from, to); long months = ChronoUnit.MONTHS.between(from, to); long weeks = ChronoUnit.WEEKS.between(from, to); long days = ChronoUnit.DAYS.between(from, to); long hours = ChronoUnit.HOURS.between(from, to); long minutes = ChronoUnit.MINUTES.between(from, to); long seconds = ChronoUnit.SECONDS.between(from, to); long milliseconds = ChronoUnit.MILLIS.between(from, to); long nano = ChronoUnit.NANOS.between(from, to); System.out.println(years + " years"); System.out.println(months + " months"); System.out.println(weeks + " weeks"); System.out.println(days + " days"); System.out.println(hours + " hours"); System.out.println(minutes + " minutes"); System.out.println(seconds + " seconds"); System.out.println(milliseconds + " milliseconds"); System.out.println(nano + " nano"); } }
Выход
0 years 1 months 5 weeks 37 days 888 hours 53280 minutes 3196806 seconds 3196806000 milliseconds 3196806000000000 nano
Рекомендации
- Java 8 – Примеры периодов и продолжительности
- Как сравнить даты в Java
Оригинал: “https://mkyong.com/java8/java-8-difference-between-two-localdate-or-localdatetime/”