In Java 8, we can use Period, Duration or ChronoUnit to calculate the difference between two LocalDate or LocaldateTime.
Periodto calculate the difference between twoLocalDate.Durationto calculate the difference between twoLocalDateTime.ChronoUnitfor everything.
1. Period
JavaLocalDate.java
package com.favtuts.time;
import java.time.LocalDate;
import java.time.Period;
public class DifferenceLocalDateTime {
public static void main(String[] args) {
diffTwoLocalDate();
}
static void diffTwoLocalDate() {
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");
}
}
Output
0 years,5 months,6 days
2. Duration
JavaLocalDateTime.java
package com.favtuts.time;
import java.time.Duration;
import java.time.LocalDateTime;
public class DifferenceLocalDateTime {
public static void main(String[] args) {
diffTwoLocalDateTime();
}
static void diffTwoLocalDateTime() {
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");
}
}
Output
6 days
144 hours
8640 minutes
518406 seconds
518406 seconds
3. ChronoUnit
JavaChronoUnit.java
package com.favtuts.time;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
public class DifferenceLocalDateTime {
public static void main(String[] args) {
// diffTwoLocalDate();
// diffTwoLocalDateTime();
useChronoUnitForDifference();
}
static void useChronoUnitForDifference() {
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");
}
}
Output
0 years
1 months
5 weeks
37 days
888 hours
53280 minutes
3196806 seconds
3196806000 milliseconds
3196806000000000 nano
Download Source Code
$ git clone https://github.com/favtuts/java-core-tutorials-examples
$ cd java-basic/time