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