我正在使用我在本网站上找到的代码来平均单圈时间 MM:SS.mmm(使用 Javascript 的平均时间)它工作得很好,直到结果在十分之一位置为零。例如,结果应该是 01:00.096 但是,零被丢弃,答案是 01:00.96我简化了“时间”的输入以突出问题。我查看了不同的格式问题,尝试将字符串转换为数字,我查看了offsetify函数,认为它以某种方式错误地解释了毫秒。我是 JavaScript 的新手,没有接受过正规培训,但喜欢编程。我从这个网站上的例子中学到了很多,可以在我自己的小应用程序中使用。var times = ['01:00.096'];var date = 0var 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());
2 回答
炎炎设计
TA贡献1808条经验 获得超4个赞
你看到 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'
添加回答
举报
0/150
提交
取消