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

how to calculate "time 1" - "time 2" in JavaScript?

本文关键字:时间 计算 JavaScript      更新时间:2023-09-26

Friends,

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

var workedHours = '05:00:00';
var defaultWorkDay = '08:00:00';

所以我需要计算工作时间 - 默认工作日并期望得到"-03:00:00"结果。

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

你有什么建议吗?

我从未使用过 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>

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

通过在小时前面加上日期(如下所示)将小时转换为带有时间的日期,然后在 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

如果您确定格式始终hours:minutes:secnodes,则可以这样做...:

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.