1

How to find the difference between to times in JavaScript?

Here is the pseudocode I've come up with

var firstTime = "20:24:00";
var secondTime = "20:00:52";
console.log(firstTime - secondTime);// 23:08 (23 minutes, 8 seconds)
Luca Kiebel
  • 9,790
  • 7
  • 29
  • 44

3 Answers3

1

You could use new Date().setHours() to make to dates from the time you have and then subtract them, make a new date from the difference:

var firstTime = "20:24:00";
var secondTime = "20:00:52";

//                                 transform variables into parameters
let dateA = new Date().setHours(...(firstTime.split(":")));
let dateB = new Date().setHours(...(secondTime.split(":")));

let diff = new Date(dateA-dateB);

console.log(`Differnce: ${diff.getUTCHours()}:${diff.getUTCMinutes()}:${diff.getUTCSeconds()}`);
Luca Kiebel
  • 9,790
  • 7
  • 29
  • 44
0

Try this:

var myDate1 = new Date();   
myDate1.setHours(20, 24, 00, 0);
var myDate2 = new Date();
myDate2.setHours(20, 00, 52, 0);

If you subtract them directly, it will give you a timestamp value. You can convert this value by saying:

var result = myDate1 - myDate2; // returns timestamp
var hours = new Date(result).getHours(); // returns hours
Yavuz Koca
  • 455
  • 4
  • 17
0

A while ago I had made a function similar to the one described:

let timeOp = function(operation, initial, value) {
  // define the type of operation in bool if needed
  if(typeof operation == "string") {
    var operation = (operation == 'add') ? true : false;
  }

  // convert to minutes `value` if needded
  if(!Number.isInteger(value)) {
    var time = value.split(':');
    value = parseInt(time[0]) * 60 + parseInt(time[1]);
  }

  // split the string and get the time in minutes
  var time = initial.split(':');
  time = parseInt(time[0]) * 60 + parseInt(time[1]);

  // add or substract `value` to minute
  time += (operation) ? value : -value;

  // standardise minutes into hours
  var hour = Math.floor(time / 60);
  var minute = time % 60;

  // return with '0' before if needed
  return hour + ':' + ((minute>=10) ? minute : ('0' + minute))
}

let firstTime = "20:24";
let secondTime = "20:00";
console.log(timeOp('substract', firstTime, secondTime)

It's not perfect and it doesn't allow to use seconds. But you can figure that out pretty easily by modifying the above code.

Ivan
  • 34,531
  • 8
  • 55
  • 100