我得到以下结果。
data[11] = "12:05:00";
data[10] = "02:00:00";
我想减去日期[11]和日期[10],因此它会将“10小时5分钟”值返回到我的其他变量并使用javascript。
到目前为止,我已尝试过这段代码:
function getAct(data, s) {
var startTime = data[10];
var endTime = data[11];
var s = startTime.split(':');
var e = endTime.split(':');
var end = new Date(0, 0, 0, parseInt(e[1], 10), parseInt(e[0], 10), 0);
var start = new Date(0, 0, 0, parseInt(s[1], 10), parseInt(s[0], 10), 0);
var elapsedMs = end - start;
var elapsedMinutes = elapsedMs / 1000 / 60;
return elapsedMinutes;
}
我只得到结果的分钟数,但结果不正确。
答案 0 :(得分:1)
1)嗯......你的代码完全错了。将start和end int放在方法的中间位置到console.log,看看你在做什么。
因此,要从代码开始,您需要更改:
var end = new Date(0, 0, 0, parseInt(e[1], 10), parseInt(e[0], 10), 0);
var start = new Date(0, 0, 0, parseInt(s[1], 10), parseInt(s[0], 10), 0);
为:
var end = new Date(0, 0, 0, parseInt(e[0], 10), parseInt(e[1], 10), 0);
var start = new Date(0, 0, 0, parseInt(s[0], 10), parseInt(s[1], 10), 0);
然后你的方法应该在大多数情况下正确返回分钟。然后你可以自己将其转换为小时和分钟。
2)但是,您必须记住,适用于日期/时间时也会有DST更改。因此,我强烈建议使用像http://momentjs.com/这样的库来处理随时间的操作。
答案 1 :(得分:0)
尝试这样。它返回正确的分钟:
function getAct(data, s) {
var startTime = data[10];
var endTime = data[11];
var s = startTime.split(':');
var e = endTime.split(':');
var end = parseInt(e[0])* 60+ parseInt(e[1]);
var start = parseInt(s[0])*60 + parseInt(s[1]);
var elapsedMs = end - start;
return elapsedMs ;
}
var data=[];
data[11] = "12:05:00";
data[10] = "02:00:00";
var minutes=getAct(data);
var hours=parseInt(minutes/60)+" hours "+ minutes%60 +" minutes";

答案 2 :(得分:0)
这很脏,但这是另一种方式
var startTime = "02:00:00";
var endTime = "12:05:00";
var dummyDate = "1/1/2000";
var timeDiff = (new Date(dummyDate + " " + endTime)).getTime() - (new Date(dummyDate + " " + startTime)).getTime();
var seconds = ~~(timeDiff/1000);
var hour = ~~(seconds/60/60);
var min = ~~((seconds - 60*60*hour) / 60);
seconds = ~~(((seconds - 60*60*hour) - min*60));
console.log(hour+":"+min+":"+seconds);

.as-console-wrapper { max-height: 100% !important; top: 0; }