is that I have two hours in string format and I need to calculate the difference in javascript, an example:
a = "10:22:57"
b = "10:30:00"
difference = 00:07:03 ?
is that I have two hours in string format and I need to calculate the difference in javascript, an example:
a = "10:22:57"
b = "10:30:00"
difference = 00:07:03 ?
Although using Date
or a library is perfectly fine (and probably easier), here is an example of how to do this "manually" with a little bit of math. The idea is the following:
hh:mm:ss
.Example:
function toSeconds(time_str) {
// Extract hours, minutes and seconds
var parts = time_str.split(':');
// compute and return total seconds
return parts[0] * 3600 + // an hour has 3600 seconds
parts[1] * 60 + // a minute has 60 seconds
+parts[2]; // seconds
}
var difference = Math.abs(toSeconds(a) - toSeconds(b));
// compute hours, minutes and seconds
var result = [
// an hour has 3600 seconds so we have to compute how often 3600 fits
// into the total number of seconds
Math.floor(difference / 3600), // HOURS
// similar for minutes, but we have to "remove" the hours first;
// this is easy with the modulus operator
Math.floor((difference % 3600) / 60), // MINUTES
// the remainder is the number of seconds
difference % 60 // SECONDS
];
// formatting (0 padding and concatenation)
result = result.map(function(v) {
return v < 10 ? '0' + v : v;
}).join(':');
Make two Date
objects out of them. Then you can compare.
Get the value out of both dates you wish to compare, and make a subtraction. Like this (supposing foo
and bar
are dates):
var totalMilliseconds = foo - bar;
That will give you the amount of milliseconds between both. Some math will convert that to days, hours, minutes, seconds or whatever unit you wish to use. For example:
var seconds = totalMilliseconds / 1000;
var hours = totalMilliseconds / (1000 * 3600);
As for obtaining a Date
from a string
, you'll have to look into the constructor (check the first link), and use it in the way that suits you best. Happy coding!
a really easy way if you will always have fewer than 12 hours:
a = "10:22:57";
b = "10:30:00";
p = "1/1/1970 ";
difference = new Date(new Date(p+b) - new Date(p+a)).toUTCString().split(" ")[4];
alert( difference ); // shows: 00:07:03
if you need to format for more than 12 hours, it's more complicated to render, the # of MS between the dates is correct using the this math...
You have to use Date objects : http://www.w3schools.com/jsref/jsref_obj_date.asp
Then compare : How to calculate date difference in javascript