Moment JS数组的月份

Moment JS array of months

我正在尝试在选定的季度(当前和上一季度)内创建月份数组。 到目前为止,我的代码遵循 this 页面的建议。

var dataQuarter =  Array.apply(null, Array(3)).map(function (_, i) {
        return moment(i, 'e').startOf('quarter').month(i).format('LL');
})

var dataQuarterLast =  Array.apply(null, Array(3)).map(function (_, i) {
        return moment(i, 'e').startOf('quarter').subtract(1, 'quarter').month(i).format('LL');
})

这并没有给我所希望的数组中的正确值。

非常感谢任何正确方向的帮助。

更新:

console.log 对于两个变量说:

Array(3) [ "January 1, 2020", "February 1, 2020", "March 1, 2020" ]

Array(3) [ "January 1, 2020", "February 1, 2020", "March 1, 2020" ]

您可以创建一个接受日期和季度的自定义函数,以从给定日期开始对年份执行季度操作。每个季度有三个月,我们将它们映射到一个数组,从该季度的第一个月开始,并递增月份值,直到我们得到以下两个。它的一个例子如下所示:

const getMonthsPerQuarter = (date, quarter) => {
    return [0, 1, 2].map(value =>
        date.quarter(quarter)
            .startOf('quarter')
            .add(value, 'months')
            .format('LL')
    );
};

const date = moment('2020-02-27');     // Change the date to any date you want.
const currentQuarter = date.quarter(); // Quarter will be a number between 1 and 4.
const lastQuarter = 4;

const currentQuarterMonths = getMonthsPerQuarter(date, currentQuarter);
const lastQuarterMonths = getMonthsPerQuarter(date, lastQuarter);

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

如果您 运行 代码段,您将看到预期的输出。如果您只想在输出数组中使用月份名称,请将 'LL' 替换为 'MMMM'.