使用Javascript在多个日期时间之间的平均天数

时间:2017-08-10 08:41:05

标签: javascript jquery arrays json

我希望使用Jquery / Javascript获得多个日期时间值之间的平均天数。

以下是我的样本数据:

8/8/2017 1:58 AM  
8/3/2017 1:58 AM  
8/4/2017 2:18 AM  
8/5/2017 1:58 AM  
8/7/2017 1:58 AM  
7/25/2017 1:58 AM  
7/24/2017 1:58 AM  
7/18/2017 1:58 AM  
7/25/2017 1:58 AM  
8/1/2017 1:58 AM 

这是我的尝试逻辑:

var sum = ['7/21/2017 1:58 AM','8/3/2017 1:58 AM','8/5/2017 1:58 AM','8/8/2017 1:58 AM'];

var avgval = "";
var total = 0
for(var index=0; index<sum.length; index++){
if (index < (sum.length-1)){
   console.log(sum[index+1], sum[index])
   var days = Math.abs((new Date(sum[index+1])-new Date(sum[index]))/(1000*60*60*24));
   total+=days;
}
else{
    avgval = total / sum.length-1;
}
}
console.log(avgval);

2 个答案:

答案 0 :(得分:1)

您也可以使用moment.js来计算天数差异(天数向下舍入为整数)。

var sum = 0;
var prevdate = false;

for(var k in dates) {
  var thedate = moment(dates[k], "M/D/YYYY H:mm A");
  if(prevdate) {
    sum += prevdate.diff(thedate, 'days');
  }
  prevdate = thedate;
}

var avg = (sum / (dates.length - 1));

https://jsfiddle.net/ishukshin/s6q0rhzL/

关于您的更新

分割时应使用括号:avgval = total / (sum.length-1)

您必须定义天数差异。也许您需要为日期之间的差异添加Math.abs

答案 1 :(得分:0)

你可以做一个简单的for循环,然后使用这个函数来获得两个日期之间的差异时间:

 let difference = (new Date(mytime1).getTime() - new Date(mytime2).getTime()) / (1000*60*60*24);

但是要小心,它会以毫秒为单位返回差异所以你必须将其除以(1000 * 60 * 60 * 24)

保存日期之间的所有差异后,将其除以数字