Friday, April 24, 2020

Difference Between Two Dates in Java

In this post we’ll see how to calculate difference between two dates in Java in terms of years, months, days, hours, minutes, seconds.

Java 8 onward you can use Period and Duration classes of the new date and time API in Java 8 to find the difference between two dates. Another option is to use SimpleDateFormat class.

Difference between two dates using SimpleDateFormat

Before Java 8 you could calculate difference between two dates manually using SimpleDateFormat.

public class DateDiff {
 public static void main(String[] args) { 
  try {
   dateDifference("28/02/2016 13:15:55", "01/03/2016 17:18:14", "dd/MM/yyyy HH:mm:ss");
  } catch (ParseException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 
 private static void dateDifference(String date1, String date2, String pattern) throws ParseException{
  SimpleDateFormat sdf = new SimpleDateFormat(pattern);
  Date d1 = sdf.parse(date1);
  Date d2 = sdf.parse(date2);
  long diffInMillis = d2.getTime() - d1.getTime();
  long dateDiffInDays = TimeUnit.DAYS.convert(diffInMillis, TimeUnit.MILLISECONDS);

  long dateDiffInHours = TimeUnit.HOURS.convert(diffInMillis - (dateDiffInDays * 24 * 60 * 60 * 1000), TimeUnit.MILLISECONDS);

  long dateDiffInMinutes = TimeUnit.MINUTES.convert(diffInMillis - (dateDiffInDays * 24 * 60 * 60 * 1000) -(dateDiffInHours * 60 * 60 * 1000), TimeUnit.MILLISECONDS);

  long dateDiffInSeconds = TimeUnit.SECONDS.convert(diffInMillis - (dateDiffInDays * 24 * 60 * 60 * 1000) - (dateDiffInHours * 60 * 60 * 1000) - (dateDiffInMinutes * 60 * 1000), TimeUnit.MILLISECONDS);

  System.out.println(dateDiffInDays + " day(s) " + dateDiffInHours + " Hour(s) " + dateDiffInMinutes + " Minute(s) " + dateDiffInSeconds + " Second(s)");
 }
}

Output

2 day(s) 4 Hour(s) 2 Minute(s) 19 Second(s)

Difference between two dates in Java 8

Java 8 onward you can use new date and time API classes Period and Duration to find difference between two dates.

  • Period class is used to model amount of time in terms of years, months and days.
  • Duration class is used to model amount of time in terms of seconds and nanoseconds.

Using these two classes you can calculate difference between two dates in terms of years, months, days along with hours, minutes, seconds (for time component).

Difference between dates using Java Period and Duration

import java.time.Duration;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.Period;

public class DateDiff {
 public static void main(String[] args) {
  LocalDateTime dateTime1 = LocalDateTime.of(2016, 8, 28, 13, 15, 55);
  LocalDateTime dateTime2 = LocalDateTime.of(2016, 8, 29, 17, 18, 14);

  getPeriod(dateTime1.toLocalDate(), dateTime2.toLocalDate());
  getTime(dateTime1.toLocalTime(), dateTime2.toLocalTime());
 }
 
 private static void getPeriod(LocalDate date1, LocalDate date2){
  Period p = Period.between(date1, date2);
  System.out.println("Year " + p.getYears());
  System.out.println("Months " + p.getMonths());
  System.out.println("Days " + p.getDays());   
 }

 private static void getTime(LocalTime time1, LocalTime time2){
   
  Duration d = Duration.between(time1, time2);
  long seconds = d.getSeconds();
  //System.out.println("seconds " + seconds);
  // Calculating hours
  System.out.println("Hours " + d.toHours());
  // Calculating Minutes
  System.out.println("Minutes " + ((seconds % 3600)/60));
  // Calculating Seconds
  System.out.println("Seconds " + (seconds % 60));

 }
}

Output

Year 0
Months 0
Days 1
Hours 4
Minutes 2
Seconds 19

Running it with another set of dates -

LocalDateTime dateTime1 = LocalDateTime.of(2016, 8, 28, 13, 15, 55);
LocalDateTime dateTime2 = LocalDateTime.of(2017, 10, 5, 15, 12, 59);

Output

Year 1
Months 1
Days 7
Hours 1
Minutes 57
Seconds 4

That's all for this topic Difference Between Two Dates in Java. If you have any doubt or any suggestions to make please drop a comment. Thanks!

>>>Return to Java Programs Page


Related Topics

  1. How to convert date and time between different time-zones in Java
  2. How to Format Time in AM-PM Format - Java Program
  3. How to format date in Java using SimpleDateFormat
  4. How to convert Date to String in Java
  5. How to find last modified date of a file in Java

You may also like-

  1. How to untar a file - Java Program
  2. How to create PDF from XML using Apache FOP
  3. Converting int to string - Java Program
  4. How HashMap internally works in Java
  5. Primitive type streams in Java Stream API
  6. JVM Run-Time Data Areas - Java Memory Allocation
  7. Serialization in Java
  8. Difference between Encapsulation and Abstraction in Java