Write a program that calculates the difference in days between two dates.
Check out Java 8 examples at Java 8 Examples
Difference between Two Dates in Java
package net.sourcecodeexamples.java;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.Period;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.temporal.ChronoUnit;
import java.util.Calendar;
import java.util.concurrent.TimeUnit;
public class Main {
public static void main(String[] args) {
System.out.println("\nBefore JDK 8:");
Calendar c1 = Calendar.getInstance();
c1.set(2018, 0, 1);
Calendar c2 = Calendar.getInstance();
c2.set(2019, 2, 1);
System.out.println("\nDate/Calendar case: " + c1.getTime() + " <-> " + c2.getTime());
long inMs = Math.abs(c1.getTimeInMillis() - c2.getTimeInMillis());
long inDays = Math.abs(TimeUnit.DAYS.convert(inMs, TimeUnit.MILLISECONDS));
System.out.println("Difference in milliseconds is: " + inMs);
System.out.println("Difference in days is: " + inDays);
System.out.println("\nStarting with JDK 8:");
LocalDate ld1 = LocalDate.of(2018, 1, 1);
LocalDate ld2 = LocalDate.of(2019, 3, 1);
System.out.println("\nLocalDate case: " + ld1 + " <-> " + ld2);
long betweenInDays = Math.abs(ChronoUnit.DAYS.between(ld1, ld2));
long betweenInMonths = Math.abs(ChronoUnit.MONTHS.between(ld1, ld2));
long betweenInYears = Math.abs(ChronoUnit.YEARS.between(ld1, ld2));
long untilInDays = Math.abs(ld1.until(ld2, ChronoUnit.DAYS));
long untilInMonths = Math.abs(ld1.until(ld2, ChronoUnit.MONTHS));
long untilInYears = Math.abs(ld1.until(ld2, ChronoUnit.YEARS));
Period period = ld1.until(ld2);
System.out.println(
"Difference as Period: " + period.getYears() + "y" + period.getMonths() + "m" + period.getDays() + "d");
System.out.println("Difference in days is via between(): " + betweenInDays);
System.out.println("Difference in months is via between(): " + betweenInMonths);
System.out.println("Difference in years is via between(): " + betweenInYears);
System.out.println("Difference in days is via until(): " + untilInDays);
System.out.println("Difference in months is via until(): " + untilInMonths);
System.out.println("Difference in years is via until(): " + untilInYears);
LocalDateTime ldt1 = LocalDateTime.of(2018, 1, 1, 22, 15, 15);
LocalDateTime ldt2 = LocalDateTime.of(2018, 1, 1, 23, 15, 15);
System.out.println("\nLocalDateTime case: " + ldt1 + " <-> " + ldt2);
long betweenInMinutesWithoutZone = Math.abs(ChronoUnit.MINUTES.between(ldt1, ldt2));
long untilInMinutesWithoutZone = Math.abs(ldt1.until(ldt2, ChronoUnit.HOURS));
System.out.println("Difference in minutes without zone: " + betweenInMinutesWithoutZone);
System.out.println("Difference in hours without zone: " + untilInMinutesWithoutZone);
}
}
Output
Before JDK 8:
Date/Calendar case: Mon Jan 01 15:13:59 IST 2018 <-> Fri Mar 01 15:13:59 IST 2019
Difference in milliseconds is: 36633600027
Difference in days is: 424
Starting with JDK 8:
LocalDate case: 2018-01-01 <-> 2019-03-01
Difference as Period: 1y2m0d
Difference in days is via between(): 424
Difference in months is via between(): 14
Difference in years is via between(): 1
Difference in days is via until(): 424
Difference in months is via until(): 14
Difference in years is via until(): 1
LocalDateTime case: 2018-01-01T22:15:15 <-> 2018-01-01T23:15:15
Difference in minutes without zone: 60
Difference in hours without zone: 1
Comments
Post a Comment