2016-09-20 6 views
1

私は開始日(日曜日)と終了日(土曜日)を持っています。それらの間の日曜日のすべてで配列を作成したいと思います。momentjs/lodashを使用して、2日間の日数/週を追加するにはどうすればよいですか?

は、ここで私がこれまで持っているものです。

weeks = [{ 
     start: startDate, 
     end: angular.copy(startDate).add(6, 'days') 
    }]; 

    while(_.last(weeks).end <= endDate) { 
     weeks.push({ 
     start: angular.copy(_.last(weeks)).start.add(7, 'days'), 
     end: angular.copy(_.last(weeks)).end.add(7, 'days') 
     }) 
    } 

これは非常に厄介な感じも、それは何らかの形で間違っているのです。それは1つだけ追加する必要がある場合、複数の日を追加しています。私はendの日付について特に気にしませんが、私がそれを得ることができるなら、私はそれを取るでしょう。

答えて

2

以下は、whileループで構築された簡単なソリューションです。私はロダッシュの構文がこの場合に問題を複雑にすると思う。

土曜日の土曜日を過ぎるまで、最初の日曜日から始まり、繰り返し7日間を繰り返します。オブジェクトのクローンを配列にプッシュします。クローンを作成しないと、1つのモーメントオブジェクトを参照し続けるのと同じ日付のリストになります。この場合はstartです。

var start = moment('2016-09-18'); //last sunday 
var finish = moment('2016-10-29'); //saturday in october 

// an array of moment objects 
var sundays = [start.clone()]; // include the first sunday 

// foreach additional sunday, clone it into an array 
while(start.add(7, 'days').isBefore(finish)) { 
    sundays.push(start.clone()); 
} 
+0

は '.clone'の瞬間ですか? – Shamoon

+0

はい、 '.clone'はモーメントオブジェクトの関数です。参考までに、ここはソースにあります - https://github.com/moment/moment/blob/e90e864617d3c501c2eaa1119392781c58a2ce63/moment.js#L2953-L2955 – ThisClark

関連する問題