戻り値は、 "10/31/2016 8/31/2017"のような文字列でなければなりません。この関数は、月のすべての月を返しますが、月の最後の日であれば、毎月最後の月曜日の日付が必要です。月の最後の日が月曜日の2つの指定された日付の間に来る日付を取得する方法
function getMondays(startYear, endYear) {
const startDate = new Date(startYear, 0, 2)
const endDate = new Date(endYear, 11, 32)
var i = startDate,
month = i.getYear(),
mondaysOfYear = []
while (i.getDay() !== 2) {
i.setDate(i.getDate() + 1)
}
while (i.getYear() === month) {
mondaysOfYear.push(new Date(i.getTime()))
i.setDate(i.getDate() + 7)
}
return mondaysOfYear
}
getMondays(2017, 2017)
反復、毎月1日に設定されている日付は、' date.setDateは1日戻って'date.getDay()=== 2' – pawel
startYearが2017の場合、10/31/2016を取得する – Slai
なぜ' endDate = new Date(endYear、11,32) 'ですか?それは翌年1月1日になります。 – RobG