[英]Generate days of a month using Moment.js fails
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;
}
我上面的代碼有什么問題? 我們可以知道每個月的天數,我很快就找到了解決方案,但是循環是否錯誤? 我希望有幾天的時間,但是我只有第一天。 嗯,有什么線索嗎?
我認為start_date_of_month = moment(start_date_of_month).add(1, 'days');
應該是start_date_of_month = start_date_of_month.add(1, 'days');
簽出此資源: 使用Moment.js格式化日期和減去日期
@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進行比較。 請嘗試我的解決方案:)
您可以使用[...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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.