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

如何使用moment.js获取最近已完成的15分钟整时点?

用Moment.js获取最近已完成的15分钟整时点

这个需求用Moment.js实现起来很直观,核心就是把当前分钟数向下取整到最近的15分钟倍数,再把时间调整到对应的整时点就行。我给你写个实用的函数,再对应你的例子逐一验证:

实现代码

function getLastQuarterHour(timeInput) {
  // 处理输入:如果传入时间字符串就解析,否则直接用当前时间
  const targetTime = timeInput ? moment(timeInput, 'HH:mm') : moment();
  // 计算最近的15分钟整时的分钟数:向下取整当前分钟/15,再乘以15
  const adjustedMinutes = Math.floor(targetTime.minute() / 15) * 15;
  // 设置分钟数,同时清零秒和毫秒,确保是严格的整时点
  return targetTime.minute(adjustedMinutes).second(0).millisecond(0).format('h:mm');
}

对应你的例子测试

  • 输入16:44:调用 getLastQuarterHour('16:44'),输出结果为 4:30(如果需要24小时制带前导零,把format参数改成HH:mm即可,输出16:30)
  • 输入2:07:调用 getLastQuarterHour('2:07'),输出结果为 2:00
  • 输入9:05:调用 getLastQuarterHour('9:05'),输出结果为 9:00
  • 输入9:16:调用 getLastQuarterHour('9:16'),输出结果为 9:15

逻辑说明

  • Math.floor(targetTime.minute() / 15) 是核心逻辑:它会把当前分钟数向下取整到最近的15分钟区间起始值。比如44分钟属于30-44区间,取整后是2,乘以15得到30分钟;16分钟属于15-29区间,取整后是1,乘以15得到15分钟,完全匹配你要的“最近已完成的整时点”需求。
  • 最后清零秒和毫秒是为了保证结果是严格的整时点,避免出现16:30:05这种带秒数的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:06:00