从JS中的HH:mm计算平均值

妮可·威尔森

我有以下数组,其中包括hh:mm

var times= [ '28:06', '27:56', '28:30']

我试图从上面的数组中计算平均小时和分钟

波纹管是我的代码

var times= [ '28:06', '27:56', '28:30'],
date = 0,
result = '';
function offsetify(t){
return t < 10 ? '0' + t : t;
}
for(var x = 0; x < times.length; x++ ) {
var tarr = times[x].split(':');
date += new Date(0, 0, 0, tarr[0], tarr[1]).getTime();   
}
var avg = new Date(date/times.length);
result = offsetify(avg.getHours()) + ':' + offsetify(avg.getMinutes());
console.log(result);

这给了我4:10这是错误的,因为平均值应该在27左右:...

我在这里做错了什么

兰吉特·辛格

您可以简单地分别找到小时和分钟部分的平均值

var times= [ '28:06', '27:56', '28:30']

function getAverage(isHourPart){
	var sum = 0;
	times.forEach(function(value){
  	sum+=parseInt(value.split(':')[isHourPart?0:1], 10);
  });
  var avg = Math.floor(sum/times.length);
  return avg<10 ? '0' + avg : avg;
}

console.log(getAverage(true)+":"+getAverage(false));

但是如果考虑小时和分钟的组合值

var times= [ '28:06', '27:56', '28:30']

function getSum(){
	var sum = 0;
	times.forEach(function(value){
  	var item = value.split(':');
  	sum+=parseInt(item[0], 10) * 60 + parseInt(item[1], 10);
  });
  return sum;
}

function getFormattedText(value){
	return value<10?"0"+value:value;
}

var totalMinutes = getSum()/3;

var hour = Math.floor(totalMinutes/60);
var minute = Math.floor(totalMinutes - hour * 60);

console.log(getFormattedText(hour)+":"+getFormattedText(minute));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章