我基本上有一个完成的秒表,除了毫秒之外。我只想显示毫秒的2位数,但我遇到了问题。这是我用来格式化时间输出的函数:
function timeFormatter(timeInMilliseconds) {
var time = new Date(timeInMilliseconds);
var minutes = time.getMinutes().toString();
var seconds = time.getSeconds().toString();
var milliseconds = time.getMilliseconds().toString().slice(0, 2);
if (minutes.length < 2) { minutes = '0' + minutes; }
if (seconds.length < 2) { seconds = '0' + seconds; }
if (milliseconds.length < 2) { milliseconds = '0' + milliseconds; }
return minutes + ' : ' + seconds + ' . ' + milliseconds;
}
问题:
例如,当我为此函数输入3093
时,输出为00 : 03 . 93
当我给函数输入3105
(应该大于前一个)时,输出为00 : 03 . 10
。换句话说,我的秒表会回来几毫秒。
我不确定如何解决这个问题,任何帮助都将不胜感激。
答案 0 :(得分:3)
你想要的是Number.prototype.toFixed
:
var hundredths = (time.getMilliseconds()/10).toFixed(2);
你真的不是在寻找毫秒(千分之一秒,可以是三位数,0-999),你正在寻找百分之一秒。所以你需要毫秒,除以10,然后舍入。那将给你百分之一秒的数字。如果您需要前导零,您可以添加它:
var hundredths= (time.getMilliseconds()/10).toFixed(0);
if(hundredths.length < 2) hundredths= "0" + hundredths;
请注意Number.prototype.toFixed
返回一个字符串,而不是一个数字。
答案 1 :(得分:0)
您可以使用简单的 pad 功能,例如:
/* Pad num with leading zeros to minimum length
** If number length is equal to or greater than minimum length,
** return it unmodified.
**
** @param {number} num - number to pad
** @param {number} length - minimum length of padded number
*/
function pad(num, length) {
if ((''+num).length >= length) return num;
var lead = '0' + new Array(length).join('0')
return (lead + num).slice(-length);
}
document.write(pad(23,5)); // 00023
document.write('<br>' + pad(223,2)); // 223
然后删除所有 if 语句并使用:
return pad(minutes,2) + ' : ' + pad(seconds,2) + ' . ' + pad(milliseconds,3);
答案 2 :(得分:-2)
只需尝试此代码即可启动,停止并重置定时器
var elem = document.getElementById("my-stopwatch");
var timer = new Stopwatch(elem, {delay: 10});
// start the timer
timer.start();
// stop the timer
timer.stop();
// reset the timer
timer.reset();