将d.getMilliseconds()调用的格式化为毫秒,始终为3位数

时间:2018-05-01 03:24:34

标签: javascript node.js

所以我有这个:

new Date().getMilliseconds();

然而,有时这只会产生1或2位数,而不是3位数。

所以我尝试使用:

new Date().getMilliseconds().toFixed(3);

所以它始终是3位数,但这似乎总是产生000,我不知道为什么。任何人都知道如何做到这一点?

3 个答案:

答案 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>