簡體   English   中英

使用Moment.js每月生成幾天失敗

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM