【发布时间】:2018-10-11 03:59:35
【问题描述】:
所以我有这个:
new Date().getMilliseconds();
但是,有时这只会产生 1 或 2 个数字,而不是 3。
所以我尝试使用:
new Date().getMilliseconds().toFixed(3);
所以它总是 3 位数,但这似乎总是产生 000,我不知道为什么。有人知道如何正确执行此操作吗?
【问题讨论】:
标签: javascript node.js
所以我有这个:
new Date().getMilliseconds();
但是,有时这只会产生 1 或 2 个数字,而不是 3。
所以我尝试使用:
new Date().getMilliseconds().toFixed(3);
所以它总是 3 位数,但这似乎总是产生 000,我不知道为什么。有人知道如何正确执行此操作吗?
【问题讨论】:
标签: javascript node.js
您可以使用padStart 将字符串填充到所需的长度:
setInterval(() => {
const str = String(new Date().getMilliseconds()).padStart(3, '0');
console.log(str);
}, 99);
虽然这是一个新功能,所以如果你想支持旧版浏览器,你需要一个 polyfill。
【讨论】:
toFixed(3) 在小数点后给出三位数字,而不是在小数点前,getMilliseconds() 返回一个整数值,小数点后没有有效数字——这就是为什么你总是得到一个以.000 结尾的数字。
因此,正如另一张海报所建议的那样,您可以使用padStart。如果你不想使用它,你可以这样做:
(1000 + new Date().getMilliseconds()).toString().substr(1);
【讨论】:
仅仅几毫秒,在无聊的基础上:
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>
【讨论】: