我想使用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);
此代码的结果如下:
[ 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()
行,因为它返回的是当前时间戳,而不是每一步的前一个时间戳。
我该如何解决?
答案 0 :(得分:2)
尝试一下
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);
在您的代码中,您正在遍历,并且每次都只减去1,而实际上并没有每次都更新数字,这就是为什么您只得到相同日期的原因,我已经更新了代码,因为它循环了,所以会更新数字天数
答案 1 :(得分:2)
您将同一变量压入数组,并始终从当前时刻减去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>