在日常开发中,时间格式化是一个非常常见的功能需求。例如,使用 new Date().getHours() 获取到的是数字 9,直接拼接成字符串会变成 "9:5:3",看起来不美观,也不符合 "09:05:03" 的标准格式。此时,padStart 就是那个能帮你自动补零的得力工具——将个位数转为两位数,简洁又可靠。

JavaScript 的 padStart 方法专门用于处理这类“补零”需求,例如 String(9).padStart(2, "0") 直接返回 "09"。告别手动 if 判断添加零的繁琐写法,一行代码即可搞定。
为什么时间显示需要用到 padStart
时间数值(如 new Date().getHours())返回的是原始数字,当为个位数时没有前导零。直接拼接会导致显示异常,比如 "9:5:3" 而非标准的 "09:05:03"。手动通过条件判断补零不仅代码冗长,还容易出错,而 padStart 提供了简洁且可靠的替代方案。
基础用法:补零至两位
对单个时间单位调用 padStart(2, "0") 即可实现:
const hour = 9;
const formattedHour = String(hour).padStart(2, "0"); // "09"
const minute = 7;
const formattedMinute = String(minute).padStart(2, "0"); // "07"
组合完整的时间字符串
将小时、分钟、秒分别处理后进行拼接,结构清晰且不易出错:
- 获取当前时间各部分:
getHours()、getMinutes()、getSeconds() - 每个值先转为字符串,再用
padStart(2, "0")补零 - 用冒号连接,形成
"HH:MM:SS"格式
function formatTime(date) {
return [
date.getHours().toString().padStart(2, "0"),
date.getMinutes().toString().padStart(2, "0"),
date.getSeconds().toString().padStart(2, "0")
].join(":");
}
console.log(formatTime(new Date())); // 例如输出 "14:05:03"
扩展:支持毫秒或 12 小时制
padStart 同样适用于更精细或不同制式的时间显示场景:
- 毫秒补三位:
date.getMilliseconds().toString().padStart(3, "0")→"007" - 12 小时制小时:先计算
hour % 12 || 12,再使用padStart(2, "0") - 避免
padStart对负数或非数字造成异常,建议确保输入为有效整数
