繁体   English   中英

计算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分钟”。

首先请注意,要使其工作,日期值必须是字符串。 然后,您可以使用简单的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);

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

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

以秒为单位将日期转换为 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'

同样,您可以迭代获取每个差异。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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