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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:15:03