[英]How do I subtract hour in javascript?
我得到下面的结果。
data[11] = "12:05:00";
data[10] = "02:00:00";
我想减去date [11]和date [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;
}
我只从结果中得到几分钟,结果是不正确的。
1)好吧...您的代码根本是错误的。 将方法的开始和结束置于控制台的中间位置,查看您在做什么。
因此,从您的代码开始,您需要更改:
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/之类的库来处理随时间推移的操作。
像这样尝试。 它返回正确的分钟数:
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";
这很脏,但这是另一种方式
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; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.