You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将d.getMilliseconds()的结果格式化为固定3位数字

解决getMilliseconds()返回不足三位数字的问题

嘿,这个问题我之前也踩过坑!咱们先搞明白为什么你用toFixed(3)没得到预期结果,再给你几个实用的解决方案。

为什么toFixed(3)不管用?

new Date().getMilliseconds()返回的是0到999之间的整数,比如当毫秒数只有5的时候,它返回的是数字5,而不是字符串"005"。toFixed(3)的作用是给小数补位到指定的小数位数,所以它会把整数5处理成"5.000"——这显然不是你想要的纯三位数字格式。

正确的实现方式

方法1:用ES6的padStart()(推荐)

这是最简洁直观的写法,现代浏览器和Node.js都支持:

const currentMs = new Date().getMilliseconds();
const threeDigitMs = currentMs.toString().padStart(3, '0');

原理很简单:

  1. 先把毫秒数从数字转成字符串
  2. padStart(3, '0')会在字符串开头填充0,直到字符串总长度达到3位。比如:
    • 数字5 → 转成"5" → 补两个0变成"005"
    • 数字50 → 转成"50" → 补一个0变成"050"
    • 数字123 → 转成"123" → 不需要补位,保持原样

方法2:兼容旧环境的写法

如果需要支持ES6之前的老浏览器,可以用字符串拼接+截取的方式:

const currentMs = new Date().getMilliseconds();
const threeDigitMs = ('00' + currentMs).slice(-3);

原理:

  1. 先给毫秒数字符串前面拼两个0,比如数字5变成"005",数字50变成"0050",数字123变成"00123"
  2. 用slice(-3)截取字符串的最后三位,这样不管原来的数字是1位、2位还是3位,最终都会得到三位的结果。

这两种方法都能稳定输出固定三位的毫秒数字符串,完全满足你的需求。

内容的提问来源于stack exchange,提问作者Alexander Mills

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:55:13