以HH:mm格式计算时差

时间:2012-08-30 08:59:09

标签: javascript timestamp

我有HH:mm格式的两个时间戳,我需要计算它们之间的差异,以相同的HH:mm格式表示时间间隔。

JavaScript中是否有任何实用程序可以实现此目的?我尝试使用Date对象,但我找不到有用的东西......你能帮助我吗?

4 个答案:

答案 0 :(得分:17)

您可以将两个日期相互减去,结果将是以毫秒为单位的差异。

来自Mozilla Developer Network:

// using static methods
var start = Date.now();
// the event you'd like to time goes here:
doSomethingForALongTime();
var end = Date.now();
var elapsed = end - start; // time in milliseconds

由于Date有一个接受毫秒作为参数的构造函数,你只需执行

即可将其重新转换为Date。
var difference = new Date(elapsed);
//If you really want the hours/minutes, 
//Date has functions for that too:
var diff_hours = difference.getHours();
var diff_mins = difference.getMinutes();

答案 1 :(得分:5)

​var t1 = '12:04'.split(':'), t2 = '3:45'​​​​​​​.split(':');
var d1 = new​ Date(0, 0, 0, t1[0], t1[1]),
    d2 = new Date(0, 0, 0, t2[0], t2[1]);
var diff = new Date(d1 - d2);

答案 2 :(得分:1)

你可以试试这个

https://github.com/layam/js_humanized_time_span

并格式化输出?

或者如果使用jquery,您可以尝试

http://timeago.yarp.com/

答案 3 :(得分:0)

假设tim1是一个字符串,如“09:15”,tim2是一个字符串,如“19:05”,则tim2和tim1之间的差异可以使用以下javascript代码导出: -

var tim1='09:15',tim2='19:05';
var ary1=tim1.split(':'),ary2=tim2.split(':');
var minsdiff=parseInt(ary2[0],10)*60+parseInt(ary2[1],10)-parseInt(ary1[0],10)*60-parseInt(ary1[1],10);
alert(String(100+Math.floor(minsdiff/60)).substr(1)+':'+String(100+minsdiff%60).substr(1));