1

这段代码应该给我 0:40 分钟,但是一方面给我 0:20 分钟,另一方面给我 1:40 分钟。

var t1 = '12:05'.split(':'),
    t2 = '12:45'.split(':');

var d1 = new Date(0,0,0,t1[0],t1[1]),
    d2 = new Date(0,0,0,t2[0],t2[1]);

document.write(d1+'<BR>');
document.write(d2+'<BR>');

var d = new Date(d1-d2);
// should give 0:40 minutes
document.write(d.getHours() + ":" + d.getMinutes() + '<BR>');
// 0:20 minutes
var d = new Date(d2-d1);
document.write(d.getHours() + ":" + d.getMinutes() + '<BR>');
// 1:40 minutes

有任何想法吗?

4

2 回答 2

2

减去两个日期可以得到它们之间的毫秒数。将其传递new Date给您一个新的日期对象,该对象距纪元数毫秒。

如果您想要两个日期之间的分钟数,只需执行以下操作:

(d1-d2)/(60*1000);
于 2013-02-22T18:19:36.910 回答
2

您可以编写自己的函数来计算两个日期差异并以 HH:MM 格式显示结果。

因为 Javascript 在时间戳中返回两个日期差异,如果我们使用该时间戳来获取 JS 日期对象,它会创建全新的日期。

这是示例 dateDiff 函数:

function dateDiff(){
    var start = '12:05'.split(':'), // hardcoded value for sample
    end = '12:45'.split(':');      // you can pass start and end value as parameter to dateDiff function.

    var startDate = new Date(0, 0, 0, start[0], start[1], 0);
    var endDate = new Date(0, 0, 0, end[0], end[1], 0);
    var diff = endDate.getTime() - startDate.getTime();
    var hours = Math.floor(diff / 1000 / 60 / 60);
    diff -= hours * 1000 * 60 * 60;
    var minutes = Math.floor(diff / 1000 / 60);

    return ( (hours < 9 ? "0" : "") + hours + ":" + (minutes < 9 ? "0" : "") + minutes);
}
于 2013-02-23T19:27:09.267 回答