Sunday, October 6, 2024
Google search engine
HomeData Modelling & AITime Difference between given times in HH:MM:SS format

Time Difference between given times in HH:MM:SS format

Given 2 times ‘st‘ and ‘et‘ in HH: MM: SS format. The task is to print the time difference between st and et in HH:MM: SS format 

Examples:

Input: st = 13:50:45, et = 14:55:50
Output: 01:05:05
Explanation: The time gap is 1 hour 5 minutes and 5 seconds.

Input: st = 12:00:00, et = 24:00:00
Output: 12:00:00
Explanation: The time gap is of 12 hours.

Approach: The task can be solved by converting both the given times in ‘seconds‘ format & then find the absolute difference between the two. Then convert this absolute difference into HH:MM: SS format
Below is the implementation of the above approach:

C++




// C++ program for the above approach
#include <bits/stdc++.h>
using namespace std;
 
class Solution {
public:
    // Function to find the time difference
    long long int getTimeInSeconds(string str)
    {
 
        vector<int> curr_time;
        istringstream ss(str);
        string token;
 
        while (getline(ss, token, ':')) {
 
            curr_time.push_back(stoi(token));
        }
 
        long long int t = curr_time[0] * 60 * 60
                          + curr_time[1] * 60
                          + curr_time[2];
 
        return t;
    }
 
    // Function to convert seconds back to hh::mm:ss
    // format
    string convertSecToTime(long long int t)
    {
        int hours = t / 3600;
        string hh = hours < 10 ? "0" + to_string(hours)
                               : to_string(hours);
        int min = (t % 3600) / 60;
        string mm = min < 10 ? "0" + to_string(min)
                             : to_string(min);
        int sec = ((t % 3600) % 60);
        string ss = sec < 10 ? "0" + to_string(sec)
                             : to_string(sec);
        string ans = hh + ":" + mm + ":" + ss;
        return ans;
    }
 
    // Function to find the time gap
    string timeGap(string st, string et)
    {
 
        long long int t1 = getTimeInSeconds(st);
        long long int t2 = getTimeInSeconds(et);
 
        long long int time_diff
            = (t1 - t2 < 0) ? t2 - t1 : t1 - t2;
 
        return convertSecToTime(time_diff);
    }
};
 
// Driver Code
int main()
{
 
    string st = "13:50:45", et = "14:55:50";
    Solution ob;
    cout << ob.timeGap(st, et) << "\n";
 
    return 0;
}


Java




// Java program for the above approach
class GFG {
 
    // Function to find the time difference
    static int getTimeInSeconds(String str) {
 
        String[] curr_time = str.split(":");
        int t = Integer.parseInt(curr_time[0]) * 60 * 60 + Integer.parseInt(curr_time[1]) * 60
                + Integer.parseInt(curr_time[2]);
 
        return t;
    }
 
    // Function to convert seconds back to hh::mm:ss
    // format
    static String convertSecToTime(int t) {
        int hours = t / 3600;
        String hh = hours < 10 ? "0" + Integer.toString(hours)
                : Integer.toString(hours);
        int min = (t % 3600) / 60;
        String mm = min < 10 ? "0" + Integer.toString(min)
                : Integer.toString(min);
        int sec = ((t % 3600) % 60);
        String ss = sec < 10 ? "0" + Integer.toString(sec)
                : Integer.toString(sec);
        String ans = hh + ":" + mm + ":" + ss;
        return ans;
    }
 
    // Function to find the time gap
    static String timeGap(String st, String et) {
 
        int t1 = getTimeInSeconds(st);
        int t2 = getTimeInSeconds(et);
 
        int time_diff = (t1 - t2 < 0) ? t2 - t1 : t1 - t2;
 
        return convertSecToTime(time_diff);
    }
 
    // Driver Code
    public static void main(String args[]) {
 
        String st = "13:50:45", et = "14:55:50";
        System.out.println(timeGap(st, et));
    }
}
 
// This code is contributed by saurabh_jaiswal.


Python3




# Python 3 program for the above approach
 
# Function to find the time difference
def getTimeInSeconds(str):
 
    curr_time = str.split(':')
 
    t = (int(curr_time[0]) * 60 * 60
         + int(curr_time[1]) * 60
         + int(curr_time[2]))
 
    return t
 
# Function to convert seconds back to hh::mm:ss
# format
def convertSecToTime(t):
 
    hours = t // 3600
    if hours < 10:
        hh = "0" + str(hours)
    else:
        hh = str(hours)
    min = (t % 3600) // 60
    if min < 10:
        mm = "0" + str(min)
    else:
        mm = str(min)
    sec = ((t % 3600) % 60)
    if sec < 10:
        ss = "0" + str(sec)
    else:
        ss = str(sec)
    ans = hh + ":" + mm + ":" + ss
    return ans
 
# Function to find the time gap
def timeGap(st,  et):
 
    t1 = getTimeInSeconds(st)
    t2 = getTimeInSeconds(et)
 
    if (t1 - t2 < 0):
        time_diff = t2 - t1
    else:
        time_diff = t1 - t2
 
    return convertSecToTime(time_diff)
 
# Driver Code
if __name__ == "__main__":
 
    st = "13:50:45"
    et = "14:55:50"
 
    print(timeGap(st, et))
 
    # This code is contributed by ukasp.


C#




// C# program for the above approach
using System;
using System.Collections.Generic;
public class GFG {
 
    // Function to find the time difference
    static int getTimeInSeconds(String str) {
 
        String[] curr_time = str.Split(':');
        int t = Int32.Parse(curr_time[0]) * 60 * 60 + Int32.Parse(curr_time[1]) * 60
                + Int32.Parse(curr_time[2]);
 
        return t;
    }
 
    // Function to convert seconds back to hh::mm:ss
    // format
    static String convertSecToTime(int t) {
        int hours = t / 3600;
        String hh = hours < 10 ? "0" + hours.ToString()
                : hours.ToString();
        int min = (t % 3600) / 60;
        String mm = min < 10 ? "0" + min.ToString()
                : min.ToString();
        int sec = ((t % 3600) % 60);
        String ss = sec < 10 ? "0" + sec.ToString()
                : sec.ToString();
        String ans = hh + ":" + mm + ":" + ss;
        return ans;
    }
 
    // Function to find the time gap
    static String timeGap(String st, String et) {
 
        int t1 = getTimeInSeconds(st);
        int t2 = getTimeInSeconds(et);
 
        int time_diff = (t1 - t2 < 0) ? t2 - t1 : t1 - t2;
 
        return convertSecToTime(time_diff);
    }
 
    // Driver Code
    public static void Main(String []args) {
 
        String st = "13:50:45", et = "14:55:50";
        Console.WriteLine(timeGap(st, et));
    }
}
 
// This code is contributed by shikhasingrajput


Javascript




<script>
       // JavaScript code for the above approach
 
       // Function to find the time difference
       function getTimeInSeconds(str) {
 
           let curr_time = [];
 
           curr_time = str.split(':')
           for (let i = 0; i < curr_time.length; i++) {
               curr_time[i] = parseInt(curr_time[i]);
           }
 
           let t = curr_time[0] * 60 * 60
               + curr_time[1] * 60
               + curr_time[2];
 
           return t;
       }
 
       // Function to convert seconds back to hh::mm:ss
       // format
       function convertSecToTime(t) {
           let hours = Math.floor(t / 3600);
           let hh = hours < 10 ? "0" + (hours).toString()
               : (hours).toString();
           let min = Math.floor((t % 3600) / 60);
           let mm = min < 10 ? "0" + (min).toString()
               : (min).toString();
           let sec = ((t % 3600) % 60);
           let ss = sec < 10 ? "0" + (sec).toString()
               : (sec).toString();
           let ans = hh + ":" + mm + ":" + ss;
           return ans;
       }
 
       // Function to find the time gap
       function timeGap(st, et) {
 
           let t1 = getTimeInSeconds(st);
           let t2 = getTimeInSeconds(et);
 
           let time_diff
               = (t1 - t2 < 0) ? t2 - t1 : t1 - t2;
 
           return convertSecToTime(time_diff);
       }
 
       // Driver Code
       let st = "13:50:45", et = "14:55:50";
 
       document.write(timeGap(st, et) + '<br>');
 
 // This code is contributed by Potta Lokesh
   </script>


Output

01:05:05

Time complexity: O(1)
Auxiliary Space: O(1)

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

RELATED ARTICLES

Most Popular

Recent Comments