JavaScript如何为日期值的小时补前导零实现指定时间格式?
实现方法
方法1:正则快速替换(仅需补小时前导零时推荐)
直接对原始字符串做匹配替换,代码最轻量:
// 读取原始时间 const rawTime = $('#strDinnerStartTime').val(); // 匹配空格后单个数字加冒号的结构,给数字补前导零 const formattedTime = rawTime.replace(/ (\d):/, ' 0$1:');
说明:该正则只会匹配个位数小时的场景,两位小时的正常时间不会被修改,无需额外做兼容性判断。
方法2:Date对象格式化(后续有其他时间操作需求时推荐)
先将字符串解析为Date对象再按规则拼接,扩展性更强:
const rawTime = $('#strDinnerStartTime').val(); const date = new Date(rawTime); // 前导零补全工具函数 const padZero = num => num.toString().padStart(2, '0'); // 按要求拼接格式 const month = padZero(date.getMonth() + 1); const day = padZero(date.getDate()); const year = date.getFullYear(); const hour24 = date.getHours(); const hour12 = padZero(hour24 % 12 || 12); const minute = padZero(date.getMinutes()); const second = padZero(date.getSeconds()); const period = hour24 >= 12 ? 'pm' : 'am'; const formattedTime = `${month}-${day}-${year} ${hour12}:${minute}:${second} ${period}`;
说明:只要原始时间字符串能被Date正常解析,不管原有格式有多少小差异,都能输出完全符合要求的统一格式。
内容的提问来源于stack exchange,提问作者Cool Tech
相关产品推荐
相关产品推荐

