使用Moment.js生成一个月的日期失败

时间:2017-05-23 03:11:09

标签: javascript reactjs momentjs

const generateDatesOfAMonth = () => {

    let start_date_of_month = moment().format("YYYY-MM-01"),
    end_date_of_month = moment().format("YYYY-MM-") + moment().daysInMonth(),
    dayArray = [];

    while (start_date_of_month <= end_date_of_month) {
        dayArray.push({ days: start_date_of_month });
        start_date_of_month = moment(start_date_of_month).add(1, 'days');
    }
    return dayArray;
}

上面的代码出了什么问题?我们可以知道每个月的天数,我通过时刻找到了解决方案,但是我的循环错了吗?我期待一系列的日子,但我得到的只是第一天。嗯,任何线索?

3 个答案:

答案 0 :(得分:0)

我想 start_date_of_month = moment(start_date_of_month).add(1, 'days');

应该是 start_date_of_month = start_date_of_month.add(1, 'days');

查看此资源: Format date and Subtract days using Moment.js

答案 1 :(得分:0)

答案 2 :(得分:0)

您可以使用[...Array(moment().daysInMonth()).keys()];为每月的每一天构建和包含元素的数组(例如[1, ... 31])。然后,您可以使用date()format()来获得结果。

这是一个实时工作样本:

const generateDatesOfAMonth = () => {
  // Get array of numbers for each day of the month
  let days = [...Array(moment().daysInMonth()).keys()];
  // Create a moment object for each day and format it
  let dayArray = days.map( day => { 
     return { days: moment().date(day+1).format('YYYY-MM-DD') } 
  });
  return dayArray;
}

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