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;
}上面的代码有什么问题?我们可以知道每个月的天数,我通过moment找到了解决方案,但是我的循环是错的吗?我希望有一系列的天数,但我只得到了第一天。嗯,有什么线索吗?
发布于 2017-05-23 11:39:13
我觉得start_date_of_month = moment(start_date_of_month).add(1, 'days');
应为start_date_of_month = start_date_of_month.add(1, 'days');
发布于 2017-05-23 12:10:23
@AlenJenshen:对不起,我没有足够的名气来评论你的问题。但是你的问题有解决方案:
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').format("YYYY-MM-DD");
}
return dayArray;
}您忘记了格式化start_date_of_month,所以while循环不能将start_date与end_date进行比较。请尝试我的解决方案:)
发布于 2017-05-23 16:32:59
您可以使用[...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>
https://stackoverflow.com/questions/44125152
复制相似问题