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 Codeint 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 approachclass 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 differencedef 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# formatdef 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 gapdef 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 Codeif __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 approachusing 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 zambiatek!
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!



