如何使用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
相关产品推荐
相关产品推荐

