2017-05-23 13 views
0
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; 
} 

上記のコードに問題がありますか?私たちは毎月の日数を知ることができます。私は瞬時に解決策を見つけましたが、私のループは間違っていますか?私は日々の配列を期待していますが、私が得たものはわずか1日目です。うーん、どんな手掛かり?Moment.jsを使用して月を生成できない場合

+2

[現在の月の日数を取得するためにmoment.jsを使用](https://stackoverflow.com/questions/の可能性のある重複35553652 /現時点での稼働日数を取得する) –

+0

@ ToanTranこれは配列を返しません。私はすでに最初と最後の日を瞬間を使って取得しました。 –

+0

[Moment.jsを使用して日付をフォーマットし、減算する](https://stackoverflow.com/questions/29651815/format-date-and-subtract-days-using-moment-js)の複製があります –

答えて

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

+0

この質問にフラグを立てる必要があります答えを投稿するのではなく、それを複製したものです。すでに他の人が行ったことがあります。「リンクの可能な複製」のようなコメントを自動的に生成します。 –

0

@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; 
} 

あなたはループがEND_DATEするSTART_DATEを比較することはできませんしばらくので、start_date_of_monthをフォーマットするのを忘れました。私の解決策を試してください:)

0

月の毎日(例えば[1, ... 31])の要素でビルドして配列するには、[...Array(moment().daysInMonth()).keys()];を使用できます。その後、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>

関連する問題