【问题标题】:Moment JS array of monthsMoment JS 数组的月份
【发布时间】:2020-10-15 09:33:42
【问题描述】:

我正在尝试在选定的季度(当前和最后一个季度)内创建一系列月份。 到目前为止,我的代码遵循this page 的建议。

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" ]

【问题讨论】:

  • 你能给出一个预期的输出作为例子吗?
  • 抱歉,我的意思是,您想要接收什么值?目前,您创建一个空数组并通过对应于一年前 3 个月的索引 (0,1,2) 进行映射。但是你想要得到的结果是什么?当前/上一季度?

标签: javascript arrays momentjs


【解决方案1】:

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

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>

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

【讨论】:

  • 谢谢!稍作修改以适应我的需要,效果很好!
猜你喜欢
  • 2014-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-08
相关资源
最近更新 更多