单圈时间平均值的毫秒数将零降至十分之一

我正在使用我在本网站上找到的代码来平均单圈时间 MM:SS.mmm(使用 Javascript 的平均时间)


它工作得很好,直到结果在十分之一位置为零。例如,结果应该是 01:00.096 但是,零被丢弃,答案是 01:00.96


我简化了“时间”的输入以突出问题。


我查看了不同的格式问题,尝试将字符串转换为数字,我查看了offsetify函数,认为它以某种方式错误地解释了毫秒。


我是 JavaScript 的新手,没有接受过正规培训,但喜欢编程。我从这个网站上的例子中学到了很多,可以在我自己的小应用程序中使用。


var times = ['01:00.096'];

var date = 0

var 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, 0, tarr[0], tarr[1].split('.')[0], tarr[1].split('.')[1]).getTime();                  

}

var avg = new Date(date/times.length);

result = offsetify(avg.getMinutes()) + ':' + offsetify(avg.getSeconds()) + '.' + offsetify(avg.getMilliseconds());


四季花海
浏览 132回答 2
2回答

炎炎设计

你看到 0 下降的原因是因为在 offsetify 函数中你有return t < 10 ? '0' + t : t;并且您将值 96 传递给它,该值不小于 10,因此函数返回96.如果您能够找到一个日期时间格式库,例如date-fns或moment,并且您应该使用一个,那就太好了!让图书馆为您完成工作。如果你想要练习,这对学习很有帮助,请使用s.padStart(3, '0')毫秒,和s.padStart(2, '0')几分钟。例如,对于您的毫秒:> "5".padStart(3, "0")'005'> "55".padStart(3, "0")'055'> "383".padStart(3, "0")'383'
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript