繁体   English   中英

如何在JavaScript中减去小时?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM