【问题标题】:Formatting milliseconds to always 3 digits for d.getMilliseconds() calld.getMilliseconds() 调用将毫秒格式化为始终 3 位数
【发布时间】:2018-10-11 03:59:35
【问题描述】:

所以我有这个:

new Date().getMilliseconds();

但是,有时这只会产生 1 或 2 个数字,而不是 3。

所以我尝试使用:

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

所以它总是 3 位数,但这似乎总是产生 000,我不知道为什么。有人知道如何正确执行此操作吗?

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

    您可以使用padStart 将字符串填充到所需的长度:

    setInterval(() => {
      const str = String(new Date().getMilliseconds()).padStart(3, '0');
      console.log(str);
    }, 99);

    虽然这是一个新功能,所以如果你想支持旧版浏览器,你需要一个 polyfill。

    【讨论】:

    • 是的,我无法决定它应该是 padStart 还是 padEnd...大声笑...但我认为您是对的,它可能应该是 padStart
    【解决方案2】:

    toFixed(3) 在小数点后给出三位数字,而不是在小数点前,getMilliseconds() 返回一个整数值,小数点后没有有效数字——这就是为什么你总是得到一个以.000 结尾的数字。

    因此,正如另一张海报所建议的那样,您可以使用padStart。如果你不想使用它,你可以这样做:

    (1000 + new Date().getMilliseconds()).toString().substr(1);
    

    【讨论】:

      【解决方案3】:

      仅仅几毫秒,在无聊的基础上:

      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>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-26
        • 1970-01-01
        • 1970-01-01
        • 2010-12-22
        • 2022-06-29
        • 1970-01-01
        • 2023-04-07
        • 2015-03-06
        相关资源
        最近更新 更多