如何使用 Moment.js 创建前 31 天的数组?

How do I create an array of the previous 31 days using Moment.js?

使用 moment.js 我正在尝试以特定 moment.js 格式生成前 31 天的数组。这是我当前的代码:

let labels = [];
const popArray = () => {
    let nowMonth: any = moment().format('D');
    let newMonth = parseInt(nowMonth);
    let startMonth = newMonth - 31;
    for(let i = startMonth; i < newMonth; i++){
        labels.push(moment().day(i).format('MM-DD'));
    }
    console.log(labels)
}
popArray();

当我 运行 这段代码时,我得到一个 31 天的数组,第一个是“11-10”,最后一个是“12-10”。为什么是这样?我尝试了不同的配置,其中 startMonth 是“-31”,newMonth 是“0”,但它仍然不起作用。

您可以像这样简单地使用减法:

let labels = [];
    const popArray = () => {
        for (let i = 0; i <= 31; i++){
            labels.push(moment().subtract(i, "days").format('MM-DD'))
        }
        console.log(labels)
    }
popArray();

不是将日期解析为整数并以这种方式循环,而是使用内置的 momentjs function subtract 从当前日期回溯 31 天,然后使用 add 函数向前循环在 momentjs.

const DAYS = () => {
  const days = []
  const dateStart = moment().subtract(31, 'days')
  const dateEnd = moment()
  while (dateEnd.diff(dateStart, 'days') >= 0) {
    days.push(dateStart.format('MM-DD'));
    dateStart.add(1, 'days')
  }
  return days;
}
console.log(DAYS())