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