Сгенерируйте массив недель с 2017 года по настоящее время с помощью moment.js

1

Мне нужно перечислить недельный массив с 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"]]
  • 0
    ["02-01-2017", "08-01-2017"] это вы вводите?
  • 0
    @ rijin спасибо, ответьте, нет, это не мой вклад, мне нужно получить начальную неделю до даты и дату окончания недели с 2017 по текущую неделю, я показал вам массив дат начала 2017
Показать ещё 2 комментария
Теги:
momentjs

2 ответа

3
Лучший ответ

Вы можете инициализировать свою начальную дату до 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>
  • 0
    здорово, это работает для меня, но мне нужно до текущей недели, сейчас я поднимаюсь до даты начала предыдущей недели и только до конца можно ли показать текущую неделю?
  • 0
    Обновленное решение.
Показать ещё 1 комментарий
1

Что-то вроде этого поможет?

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);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню