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

JavaScript如何将毫秒数格式化为补前导零的3位固定长度字符串

问题原因

toFixed(3)是用于控制数字的小数保留位数,你获取的milliseconds是整数类型,比如数值2调用toFixed(3)会得到"2.000",和你需要的前导零效果不符,所以不会生效。

解决方案

1. 现代浏览器推荐方案(ES6 padStart)

直接将毫秒数转为字符串后调用padStart方法即可实现前导零补位,该方法第一个参数为目标长度,第二个参数为填充字符:

var updateTime = function () {
  var tempTime = elapsedTime;
  var milliseconds = tempTime % 1000;
  // 毫秒补3位前导零
  var formattedMs = milliseconds.toString().padStart(3, '0');
  tempTime = Math.floor(tempTime / 1000);
  var seconds = tempTime % 60;
  tempTime = Math.floor(tempTime / 60);
  var minutes = tempTime % 60;
  tempTime = Math.floor(tempTime / 60);
  var hours = tempTime % 60;
  // 时分秒也可以按需补2位前导零,展示效果更统一
  time = hours.toString().padStart(2, '0') + ":" + 
         minutes.toString().padStart(2, '0') + ":" + 
         seconds.toString().padStart(2, '0') + "." + 
         formattedMs;
  console.log(formattedMs)
  document.getElementById('time').innerText = time
};

2. 兼容旧浏览器方案

如果需要兼容不支持ES6的旧浏览器,可以手动实现补零逻辑:

// 通用补零工具函数,num为待处理数字,len为目标长度
function padZero(num, len) {
  var str = num + '';
  while (str.length < len) {
    str = '0' + str;
  }
  return str;
}

var updateTime = function () {
  var tempTime = elapsedTime;
  var milliseconds = tempTime % 1000;
  var formattedMs = padZero(milliseconds, 3);
  // 剩余逻辑和上面的实现一致即可
  // ...
};

内容的提问来源于stack exchange,提问作者Ruan Matt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:36:00