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

如何使用Moment.js创建包含今日及未来9天的动态日期数组?

用Moment.js生成今日及未来9天的日期数组

直接写个循环就能搞定,从今日开始,依次生成往后9天的日期,收集到数组里就行:

// 生成报表所需的日期数组
function generateReportDates() {
  const dateList = [];
  // 今日+未来9天,一共10天,循环10次
  for (let i = 0; i < 10; i++) {
    // 基于当前日期添加i天,可按需转成Date对象或保留moment对象
    const date = moment().add(i, 'days').toDate();
    dateList.push(date);
  }
  return dateList;
}

// 调用示例
const reportDates = generateReportDates();

要是不需要原生Date对象,去掉.toDate()就能得到moment实例数组。

旧代码的逻辑说明

这段代码:

const now = moment().add(-moment().utcOffset(), 'minutes').toDate()

核心作用是把当前本地时间转换为对应的UTC时间,再转成原生Date对象。

具体原理:

  • moment().utcOffset()会返回当前时区与UTC的分钟差(比如东八区返回480,即8小时)
  • 给当前moment对象减去这个偏移量,等价于将本地时间转成UTC时间
  • 最后用.toDate()转成原生Date对象,此时这个对象存储的是UTC时间对应的时刻

一般这种写法是为了统一用UTC时间处理日期,避免不同时区下的日期计算偏差。如果只是想获取本地今天的起始时间(比如00:00:00),其实直接用moment().startOf('day').toDate()更直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 05:55:34