此代码应该给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
有什么想法吗?
答案 0 :(得分:2)
减去两个日期可以得到它们之间的毫秒数。将此传递给new Date
会为您提供一个新的日期对象,距离纪元很多毫秒。
如果您想要两个日期之间的分钟数,请执行以下操作:
(d1-d2)/(60*1000);
答案 1 :(得分:2)
您可以编写自己的函数来计算两个日期差异,并以HH:MM格式显示结果。
因为Javascript在时间戳中返回两个日期差异&amp;如果我们使用该时间戳获取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);
}