我希望使用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);
答案 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)
保存日期之间的所有差异后,将其除以数字