如何在JavaScript中实现12小时制时间转24小时制时间
JavaScript实现12小时制时间转24小时制方案
直接可用的转换函数如下:
function convert12To24(time12h) { // 可选:输入格式校验,避免非法输入报错 const timeReg = /^(1[0-2]|0?[1-9]):([0-5][0-9]) (AM|PM)$/; if (!timeReg.test(time12h)) { throw new Error('时间格式不合法,请输入类似"9:00 PM"的格式'); } // 拆分时间部分和AM/PM标识 const [time, modifier] = time12h.split(' '); let [hours, minutes] = time.split(':'); hours = parseInt(hours, 10); // 按AM/PM规则修正小时数值 if (modifier === 'PM') { // PM场景:12点保持12,其余小时加12 hours = hours === 12 ? 12 : hours + 12; } else { // AM场景:12点转0点,其余小时保持原值 hours = hours === 12 ? 0 : hours; } // 补两位前导零后拼接返回 return `${hours.toString().padStart(2, '0')}:${minutes.padStart(2, '0')}`; }
测试示例
- 输入
"9:00 PM"→ 输出"21:00" - 输入
"12:30 AM"→ 输出"00:30" - 输入
"12:45 PM"→ 输出"12:45" - 输入
"11:00 AM"→ 输出"11:00" - 输入
"11:59 PM"→ 输出"23:59"
兼容旧环境的写法
如果运行环境不支持ES6的padStart方法,可以替换成自定义补零逻辑:
function addZero(num) { return num < 10 ? `0${num}` : num; } // 把返回部分替换为以下代码即可 return `${addZero(hours)}:${addZero(minutes)}`;
内容的提问来源于stack exchange,提问作者John Phillip Abello
相关产品推荐
相关产品推荐

