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

标签 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);

最佳答案

您也可以使用 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 来计算日期之间的差异。

关于javascript - 使用 Javascript 的多个日期时间之间的平均天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45608598/

相关文章:

ruby-on-rails - ruby 包括?使用 YAML 数组

javascript - webpack watch 只看入口

jquery - 如何限制输入文本框只允许0和1

javascript - 将 data-id 传递到 bootstrap 模式而不使用 jquery

javascript - 使用jquery使用选定的列从html表创建json对象

javascript - (".menu") 或 ("menu") JQuery/JavaScript

java - 迷宫求解器 ArrayIndexOutOfBoundsException

没有索引的javascript数组拼接

javascript - 无法从 JSON 请求中获取数据,尽管我知道它已返回

javascript - 手机的非 AJAX 替代方案