如何在JavaScript中计算“时间1” - “时间2”?

时间:2014-11-17 21:36:10

标签: javascript datetime datediff

我想计算两次之间的差异。例如,我有

var workedHours = '05:00:00';

var defaultWorkDay = '08:00:00';

所以我需要计算workingHours - defaultWorkDay并期望'-03:00:00'结果。

我尝试过moment.js但没有成功。

你有什么建议吗?

3 个答案:

答案 0 :(得分:1)

我从未使用过moment.js,但我认为这对你有用:



    var defaultWorkDay = '08:00:00';
    var workedHours = '05:00:00';
    var a = moment.duration(defaultWorkDay);
    var b = moment.duration(workedHours);
    
    console.log( [ b.subtract(a).hours(), b.subtract(a).minutes(), b.subtract(a).seconds() ]
    ) // [-3:0:0]

<script src="http://momentjs.com/downloads/moment.min.js"></script>
&#13;
&#13;
&#13;

http://momentjs.com/docs/#/durations/subtract/

答案 1 :(得分:0)

如果您确定格式始终为hours:minutes:secnodes,则可以this执行此操作...:

var start = "05:00:00";
var end = "08:00:00";

var startArr = start.split(':');
var endArr = end.split(':'); 

var diffInSeconds = 0
    + ( endArr[0] - startArr[0] ) * 3600
    + ( endArr[1] - startArr[1] ) * 60
    + ( endArr[2] - startArr[2] ) ;

console.log ( 'The difference is : ' + diffInSeconds + ' seconds.');

// => The difference is 10800 seconds.

答案 2 :(得分:0)

通过在日期前面添加日期(如下所示),将您的小时数转换为日期,然后使用Date对象上的.getTime()进行数学运算。然后将这些毫秒转换为您的小时数,或者您想要的任何其他时间单位。

  var date1 = new Date("2000-01-01 05:00:00");
  var date2 = new Date("2000-01-01 08:00:00");
  var msTimeOffset = date1.getTime() - date2.getTime();
  var hourTimeOffset = msTimeOffset / 1000 / 60 / 60;
  expect(hourTimeOffset).toBe(-3); // passes