Java Program to Calculate Difference Between Two Time Periods

11 Dec, 2020
In this article, let’s explore the various methods to find the difference between the Two Time Periods in Java. For simplicity, let’s assume that the Time Period provided to us is in the format HH:MM:SS
Example
Input : 1st Time Period :- 18:00:00
    2nd Time Period :- 21:00:00
Output: 3 hours 0 minutes and 0 seconds
 
Input : 1st Time Period :- 17:00:00
        2nd Time Period :- 23:22:00
Output: 6 hours 22 minutes and 0 seconds
 
Method 1 :- Using SimpleDateFormat class and Date class
SimpleDateFormat class has been added to the java.text package in the 7th JDK version. Parse the Time Period in the format HH:MM:SS by creating a SimpleDateFormat object. SimpleDateFormat object parses the Time period and returns a Date object which can be used to calculate the time elapsed.
Below is the code for the above approach:
Java
// Java Program to Find the difference// between Two Time Periods  // Importing the Date Class from the util packageimport java.util.*;  // Importing the SimpleDateFormat// Class from the text packageimport java.text.*;  public class GFG {      public static void main(String[] args) throws Exception    {          // Dates to be parsed        String time1 = "18:00:00";        String time2 = "7:30:50";          // Creating a SimpleDateFormat object        // to parse time in the format HH:MM:SS        SimpleDateFormat simpleDateFormat            = new SimpleDateFormat("HH:mm:ss");          // Parsing the Time Period        Date date1 = simpleDateFormat.parse(time1);        Date date2 = simpleDateFormat.parse(time2);          // Calculating the difference in milliseconds        long differenceInMilliSeconds            = Math.abs(date2.getTime() - date1.getTime());          // Calculating the difference in Hours        long differenceInHours            = (differenceInMilliSeconds / (60 * 60 * 1000))              % 24;          // Calculating the difference in Minutes        long differenceInMinutes            = (differenceInMilliSeconds / (60 * 1000)) % 60;          // Calculating the difference in Seconds        long differenceInSeconds            = (differenceInMilliSeconds / 1000) % 60;          // Printing the answer        System.out.println(            "Difference is " + differenceInHours + " hours "            + differenceInMinutes + " minutes "            + differenceInSeconds + " Seconds. ");    }}
Difference is 10 hours 29 minutes 10 Seconds. 

Time Complexity: O(1)
 
Method 2 :- Using the LocalTime and ChronoUnit class
Java has brought a ton of features in the 8th JDK version and few of them are the LocalTime and ChronoUnit classes present in the java.time package. LocalTime object parses the date in the format HH:MM:SS and ChronoUnit is used to get the difference in hours, minutes and seconds.
Below is the code for the above approach:
Java
// Java program to get the difference// between Two Time Periods in Java  // Importing the LocalTime classimport java.time.*;  // Importing the ChronoUnit classimport java.time.temporal.ChronoUnit;  class GFG {    public static void main(String[] args)    {          // Parsing Time Period in the format HH:MM:SS        LocalTime time1 = LocalTime.of(18, 00, 00);        LocalTime time2 = LocalTime.of(21, 22, 00);          // Calculating the difference in Hours        long hours = ChronoUnit.HOURS.between(time1, time2);          // Calculating the difference in Minutes        long minutes            = ChronoUnit.MINUTES.between(time1, time2) % 60;          // Calculating the difference in Seconds        long seconds            = ChronoUnit.SECONDS.between(time1, time2) % 60;          // Printing the difference        System.out.println(            "Difference is " + hours + " hours " + minutes            + " minutes " + seconds + " seconds.");    }}
Difference is 3 hours 22 minutes 0 seconds.

Time Complexity: O(1)
Picked
Technical Scripter 2020
Java
Java Programs
Technical Scripter
Java
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.