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

Utk*_*rsh 4 javascript datetime momentjs

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

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);
Run Code Online (Sandbox Code Playgroud)

这段代码的结果如下:

[ 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") ]
Run Code Online (Sandbox Code Playgroud)

这是相同的日期,而不是我想要的每次迭代的前一个日期。

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

我怎样才能解决这个问题?

Sat*_*pal 6

您将相同的变量推入数组,并始终从当前时刻减去 1。

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

for(...){
   let date = moment();
   date.subtract(i, 'day')
   ...
}
Run Code Online (Sandbox Code Playgroud)

for(...){
   let date = moment();
   date.subtract(i, 'day')
   ...
}
Run Code Online (Sandbox Code Playgroud)
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);
Run Code Online (Sandbox Code Playgroud)


Smo*_*son 5

尝试这个

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++) {
  let date = moment();
  date.subtract(i, 'day').format('DD-MM-YYYY');
  dates.push(date);
}

console.log(dates);
Run Code Online (Sandbox Code Playgroud)

在你的代码中,你循环遍历,每次只减 1,而不是每次实际更新数字,这就是为什么你只得到相同的日期,我已经更新了你的代码,所以当它循环时,它会更新天数