如何将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');
原理很简单:
- 先把毫秒数从数字转成字符串
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);
原理:
- 先给毫秒数字符串前面拼两个
0,比如数字5变成"005",数字50变成"0050",数字123变成"00123" - 用
slice(-3)截取字符串的最后三位,这样不管原来的数字是1位、2位还是3位,最终都会得到三位的结果。
这两种方法都能稳定输出固定三位的毫秒数字符串,完全满足你的需求。
内容的提问来源于stack exchange,提问作者Alexander Mills
相关产品推荐
相关产品推荐

