计算javascript中数组每个值的差值?

Calculate Difference of each value of array in javascript?

我有以下数据集。我有一组这样的对象

[{ 
    createdAt: Wed Feb 08 2017 12:16:35 GMT+0500 (Pakistan Standard Time),
    set: 'jr',
},{ 
    createdAt: Wed Feb 08 2017 12:18:36 GMT+0500 (Pakistan Standard Time),
    or: 'd',
},{ 
    createdAt: Wed Feb 08 2017 12:22:46 GMT+0500 (Pakistan Standard Time),
    or: 'd',
},]

我想计算每个 createdAt 之间的时间差,例如从第一个两个 createdAt 字段开始,它将给出“2 分钟”。

var a = new Date(arr[0].createdAt);
var b = new Date(arr[1].createdAt);
var diff;

if(a > b) {
    diff = a.getTime() - b.getTime();
} else {
    diff = b.getTime() - a.getTime();
}

diff = diff/1000;

// now diff is in seconds
// calculate minutes by dividing it by 60
// use this in for loop

首先请注意,要使其正常工作,日期值必须是字符串。然后您可以使用一个简单的 for 循环遍历数组,将字符串转换为 Date 对象并将当前日期值与下一个数组元素中的日期值进行比较。从那里您可以计算日期之间的分钟数。试试这个:

var data = [{
  createdAt: 'Wed Feb 08 2017 12:16:35 GMT+0500 (Pakistan Standard Time)',
  set: 'jr'
}, {
  createdAt: 'Wed Feb 08 2017 12:18:36 GMT+0500 (Pakistan Standard Time)',
  or: 'd'
}, {
  createdAt: 'Wed Feb 08 2017 12:22:46 GMT+0500 (Pakistan Standard Time)',
  or: 'd'
}]

var differences = [];
for (var i = 0; i < data.length - 1; i++) {
  var diff = new Date(data[i + 1].createdAt) - new Date(data[i].createdAt);
  var diffMins = new Date(diff).getMinutes();
  differences.push(diffMins);
}

console.log(differences); 

请注意,上述逻辑取决于按升序排列的日期。

将日期转换为以秒为单位的 unix 时间戳。然后你可以像下面的伪代码那样通过算术运算来计算以秒为单位的差异。

var d1 = Date.parse('Wed Feb 08 2017 12:16:35 GMT+0500')/1000 //1486538195
var d2 = Date.parse('Wed Feb 08 2017 12:18:35 GMT+0500')/1000 //1486538315
var diff = Math.floor((d2 - d1)/60) + 'Min' + (d2-d1)%60 + 'Sec'

同样,您可以遍历每个差异。