開始日と終了日が指定されていると、どうすればすべてを取得できますか? 9月1日から11月2日までの日曜日?日曜日/月曜日/火曜日を2つの日付の間に取得するにはどうすればいいですか?
注 - ない重複:私は、カウントではなく、SOの質問は数を求めているjavascriptの日付またはmomentjsオブジェクトのいずれかのような個々の日付(他にリンク答えを望んでいません)
開始日と終了日が指定されていると、どうすればすべてを取得できますか? 9月1日から11月2日までの日曜日?日曜日/月曜日/火曜日を2つの日付の間に取得するにはどうすればいいですか?
注 - ない重複:私は、カウントではなく、SOの質問は数を求めているjavascriptの日付またはmomentjsオブジェクトのいずれかのような個々の日付(他にリンク答えを望んでいません)
終了日を過ぎるまで、ループを使用して次の日曜日の日付を継続的に取得します。
var start = moment('2016-09-01'), // Sept. 1st
end = moment('2016-11-02'), // Nov. 2nd
day = 0; // Sunday
var result = [];
var current = start.clone();
while (current.day(7 + day).isBefore(end)) {
result.push(current.clone());
}
console.log(result.map(m => m.format('LLLL')));
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>
あなたは、例えば終了日を過ぎているまで、わずか7日間を追加し続ける、必要な名前の最も近い日に開始日から行くことができます
/* Given a start date, end date and day name, return
** an array of dates between the two dates for the
** given day inclusive
** @param {Date} start - date to start from
** @param {Date} end - date to end on
** @param {string} dayName - name of day
** @returns {Array} array of Dates
*/
function getDaysBetweenDates(start, end, dayName) {
var result = [];
var days = {sun:0,mon:1,tue:2,wed:3,thu:4,fri:5,sat:6};
var day = days[dayName.toLowerCase().substr(0,3)];
// Copy start date
var current = new Date(start);
// Shift to next of required days
current.setDate(current.getDate() + (day - current.getDay() + 7) % 7);
// While less than end date, add dates to result array
while (current < end) {
result.push(new Date(+current));
current.setDate(current.getDate() + 7);
}
return result;
}
// Get Wednesdays between 15 December, 2016 and 25 February, 2017.
console.log(getDaysBetweenDates(
new Date(2016,11,15),
new Date(2017,1,25),
'Wed'));
東グリニッジのユーザーが1日早く予想より日付が表示されますので、SO、デフォルトではISO 8601 UTCとしてプリント日付を慰めることに注意してください。また、関数は入力を検証しなければならない。すなわち、有効な開始および終了Dateオブジェクトと、dayNameが有効であることを確認する必要がある。
あなたの質問が下落して重複としてマークされている理由はわかりません。明らかにそうではありません。 – theCrius