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

JavaScript中如何为Date对象正确设置AM/PM时间标识?

解决AM/PM时间设置问题

你的代码只处理了小时和分钟,没考虑AM/PM的时段转换,所以会出现时间显示异常的情况。核心问题是setHours方法用的是24小时制,而你的baseTime是12小时制格式,得先把时段转换成对应的24小时制小时数再设置。

修改后的代码如下:

const baseTime = "9:00:00 AM"
const convertedTime = new Date();

// 拆分时间部分和时段
const [timePart, period] = baseTime.split(' ');
const [hourStr, minuteStr] = timePart.split(':');
let hour = parseInt(hourStr);

// 根据AM/PM转换小时到24小时制
if (period === 'PM') {
  // PM时段:12点保持12,其他小时加12
  hour = hour === 12 ? 12 : hour + 12;
} else {
  // AM时段:12点转换成0,其他保持原小时
  hour = hour === 12 ? 0 : hour;
}

convertedTime.setHours(hour);
convertedTime.setMinutes(parseInt(minuteStr));
convertedTime.setSeconds(0); // 顺便把秒也设置成0,和baseTime一致

关键逻辑说明:

  • 先把baseTime拆成时间部分(9:00:00)和时段(AM)
  • 针对PM时段:如果小时是12,就保持12(比如12PM是中午12点);如果是其他数字(比如9PM),就加12变成21点
  • 针对AM时段:如果小时是12,就改成0(比如12AM是凌晨0点);其他数字(比如9AM)保持9不变
  • 最后把秒设为0,避免继承当前时间的秒数导致时间不准确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 02:10:25