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> |
01:05:05
Time complexity: O(1)
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!
