所以我有这个:
new Date().getMilliseconds();
然而,有时这只会产生1或2位数,而不是3位数。
所以我尝试使用:
new Date().getMilliseconds().toFixed(3);
所以它始终是3位数,但这似乎总是产生000
,我不知道为什么。任何人都知道如何做到这一点?
答案 0 :(得分:1)
您可以使用padStart
将字符串填充到所需的长度:
setInterval(() => {
const str = String(new Date().getMilliseconds()).padStart(3, '0');
console.log(str);
}, 99);

虽然这是一个新功能,但如果您想支持旧浏览器,则需要填充。
答案 1 :(得分:0)
toFixed(3)
在小数点后给出三位数,而不是在小数点之前,getMilliseconds()
返回小数点后没有有效数字的整数值 - 这就是为什么你总是得到一个以.000
结尾的数字。
因此,正如另一张海报所建议的那样,您可以使用padStart
。如果你不想使用它,你可以这样做:
(1000 + new Date().getMilliseconds()).toString().substr(1);
答案 2 :(得分:0)
在无聊的基础上仅几毫秒:
let m = new Date().getMilliseconds();
if (m<1){m = "000";}
else if(m<10){m = "00" + m;}
else if(m<100){m = "0" + m;}
仍然使用基本原理;现在具有互动性,整个时间(以毫秒为单位)。
var myVar = setInterval(myTimer, 100);
function myTimer() {
let d = new Date();
let m = d.getMilliseconds();
if(m<1){m = "000" + m;}
else if(m<10){m = "00" + m;}
else if(m<100){m = "0" + m;}
var dateString = d.toLocaleTimeString();
dateString = dateString.replace(" AM", "." + m + " AM");
dateString = dateString.replace(" PM", "." + m + " PM");
document.getElementById("demo").innerHTML = dateString;
}
<p>Start and stop this clock (always starts at current time with milliseconds):</p>
<p id="demo">Time at some time</p>
<button
id="stop"
onclick="clearInterval(myVar);
document.getElementById('restart').style.display='block';
document.getElementById('stop').style.display='none';"
style="display:block;"
>Stop time</button>
<button
id="restart"
onclick="myVar = setInterval(myTimer, 100);
document.getElementById('restart').style.display='none';
document.getElementById('stop').style.display='block';"
style="display:none;"
>Restart time</button>