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

使用Moment.js生成仅含小时与AM/PM的最近24小时数组问题

解决Moment.js生成最近24小时小时+AM/PM数组的问题

嘿,我来帮你搞定这个问题!你现在的核心问题是没用到Moment.js的格式化方法,所以返回的是完整的日期对象,而不是你需要的小时格式。下面是修正后的代码,我会给你详细解释:

完整可运行代码

var hoursPerDay = 24;
var time = [];

function timeOneDay() {
  // 用let声明i避免全局变量污染
  for (let i = 0; i < hoursPerDay; i++) {
    // 从当前时间往前推i个小时,然后格式化目标格式
    const formattedTime = moment().subtract(i, 'hours').format('h A');
    time.push(formattedTime);
  }
  // 可选:如果需要数组按「24小时前 → 当前时间」的顺序排列,取消下面注释
  // time = time.reverse();
}

// 调用函数生成数组
timeOneDay();
// 打印结果看看
console.log(time);

关键细节说明

  • moment().subtract(i, 'hours'):这个方法用来获取当前时间往前推i小时的时间节点,这样就能遍历最近24小时的每个对应小时点。
  • format('h A'):这是Moment.js的格式化核心:
    • h:表示12小时制的小时数(不带前导零,比如1、10、12)
    • A:表示大写的AM/PM标识(比如AM、PM)
    • 如果需要带前导零的12小时制(比如01、10),把格式改成hh A就行
  • 循环范围:把i < hoursPerDay + 1改成i < hoursPerDay,不然会生成25个元素,不符合24小时的需求。
  • 顺序调整:默认生成的数组是「当前小时 → 24小时前的小时」,如果需要反过来的顺序,就加上time = time.reverse();。

注意事项

确保你的项目已经正确引入了Moment.js库,不然代码会抛出moment is not defined的错误哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:44:22