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

JavaScript如何将AM/PM格式时分转为今日UTC毫秒时间戳

JS将12小时制时间字符串转为当日UTC毫秒时间戳

核心逻辑是先解析输入的12小时制时间,再基于当前UTC日期拼接完整时间对象,最终生成时间戳,避免本地时区导致的偏移问题。

可直接运行的实现代码

/**
 * 将 "6:00 AM" 格式的12小时制时间转为今日UTC对应毫秒时间戳
 * @param {string} timeStr - 12小时制时间字符串
 * @returns {number} 毫秒级UTC时间戳
 */
function getTodayUTCTimestamp(timeStr) {
  // 拆分时间部分和AM/PM标识
  const [clockTime, meridiem] = timeStr.trim().split(/\s+/);
  let [hours, minutes] = clockTime.split(':').map(Number);

  // 12小时制转24小时制
  if (meridiem.toUpperCase() === 'PM' && hours !== 12) hours += 12;
  if (meridiem.toUpperCase() === 'AM' && hours === 12) hours = 0;

  // 取当前UTC日期的年、月、日(月份从0开始计数,直接取UTCMonth不需要额外转换)
  const now = new Date();
  const year = now.getUTCFullYear();
  const month = now.getUTCMonth();
  const day = now.getUTCDate();

  // 生成UTC时间戳,秒、毫秒位默认填0,需要对应示例的9秒偏移就在秒参数位置传9
  return Date.UTC(year, month, day, hours, minutes, 0, 0);
}

// 调用测试
console.log(getTodayUTCTimestamp("6:00 AM"));

注意事项

  • 不要直接用本地时间的getFullYear()/getMonth()/getDate()取日期拼接,会和UTC日期存在时区差,导致结果偏差
  • 12点的特殊场景要单独处理:12:00 AM对应UTC 0点,12:00 PM对应UTC 12点
  • 你给出的示例时间戳对应Wed Jun 15 2022 06:00:09带9秒的零散值,属于示例的随机偏差,常规业务场景秒、毫秒位传0即可,有特殊偏移需求自行调整对应参数就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 00:21:30