使用Moment.js获取最近X天的日期

2022-02-28 00:00:00 datetime javascript momentjs

我要使用Moment.js获取当前日期的最后x日期。

const moment = require('moment');

let dates;
const dates = [];
const NUM_OF_DAYS = 12; // get last 12 dates.

for (let i = 0; i < NUM_OF_DAYS; i++) {
  date = moment();
  date.subtract(1, 'day').format('DD-MM-YYYY');
  dates.push(date);
}

console.log(dates);

此代码的结果如下:

[ moment("2018-07-09T11:40:04.663"),
  moment("2018-07-09T11:40:04.675"),
  moment("2018-07-09T11:40:04.675"),
  moment("2018-07-09T11:40:04.675"),
  moment("2018-07-09T11:40:04.675"),
  moment("2018-07-09T11:40:04.675"),
  moment("2018-07-09T11:40:04.675"),
  moment("2018-07-09T11:40:04.675"),
  moment("2018-07-09T11:40:04.675"),
  moment("2018-07-09T11:40:04.675"),
  moment("2018-07-09T11:40:04.675"),
  moment("2018-07-09T11:40:04.675") ]

此日期与我希望的每个迭代的日期相同,而不是以前的日期。

我知道问题出在date = moment()行,因为它在每个步骤返回当前时间戳而不是上一个时间戳。

如何修复此问题?


解决方案

您正在将同一变量推入数组,并且始终从当前时刻减去1。

在循环内声明date变量并减去i

for(...){
   let date = moment();
   date.subtract(i, 'day')
   ...
}
const dates = [];
const NUM_OF_DAYS = 12; // get last 12 dates.

for (let i = 0; i < NUM_OF_DAYS; i++) {
  let date = moment();
  date.subtract(i, 'day').format('DD-MM-YYYY');
  dates.push(date);
}

console.log(dates);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

相关文章