Мне нужно перечислить недельный массив с 2017 года по настоящее время. Моя неделя начинается с понедельника и заканчивается в воскресенье, когда я пытался сделать это в moment.js,
const startDate = moment().isoWeekday('Monday').format('DD-MM-YYYY');
const endDate = moment().isoWeekday('Sunday').format('DD-MM-YYYY');
Я попытался понравиться, чтобы получить дату начала и дату начала недели, но я не знаю, как это делается на следующем этапе.
Обратите внимание, что список моих массивов начинается с ["02-01-2017", "08-01-2017"]
и заканчивается текущей неделей последней.
const result = [["02-01-2017", "08-01-2017"],...... ["05-01-2018", "11-01-2018"]]
Вы можете инициализировать свою начальную дату до 1-го дня недели с 1 января 2017 года и перебирать все даты меньше, чем сегодня, и продолжать добавлять дни в массив.
var weeks = [];
var startDate = moment(new Date(2017,0,1)).isoWeekday(8);
if(startDate.date() == 8) {
startDate = startDate.isoWeekday(-6)
}
var today = moment().isoWeekday('Sunday');
while(startDate.isBefore(today)) {
let startDateWeek = startDate.isoWeekday('Monday').format('DD-MM-YYYY');
let endDateWeek = startDate.isoWeekday('Sunday').format('DD-MM-YYYY');
startDate.add(7,'days');
weeks.push([startDateWeek,endDateWeek]);
}
console.log(weeks)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.min.js"></script>
Что-то вроде этого поможет?
let startDate = moment('2017-01-01').startOf('week').format('YYYY-MM-DD');
let endDate = moment(new Date()).startOf('week').format('YYYY-MM-DD');
const weeks = [];
while (startDate <= endDate) {
weeks.push(startDate);
startDate = moment(startDate).add(7, 'days').format('YYYY-MM-DD');
}
console.log('weeks:', weeks);