Получить даты для текущей недели и следующей - PullRequest
0 голосов
/ 11 апреля 2020

Я хотел бы иметь массив с датами текущей недели и следующей недели. Я пытался реализовать это с помощью для l oop и некоторое время l oop, но в данный момент не удалось

getTwoWeeks = () => {

    let twoWeeks = [];
    let days = 14;
    let today = new Date;
    let calcFirst = today.getDate() - today.getDay();
    let firstDayOfWeek = new Date(today.setDate(calcFirst));

    for(let i=0; i<days; i++) {
        twoWeeks.push( new Date(today.setDate(firstDayOfWeek + days[i])) )
    }

    console.log('twoWeeks===',twoWeeks )
}

Ответы [ 3 ]

2 голосов
/ 11 апреля 2020

Вы можете сначала вычислить понедельник текущей недели, а затем выполнить итерацию до 14 дней.

const today = new Date();
const dayOfWeek = today.getDay();
const lastMonday = new Date(today.setDate(today.getDate() + (dayOfWeek * -1 + 1)));

for (let i = 1, d = lastMonday; i <= 14; i++, d.setDate(d.getDate() + 1)) {
  console.log(new Date(d));
}
1 голос
/ 11 апреля 2020

Вы можете сделать это следующим образом:

getTwoWeeks = () => {
               let twoWeeks = [];
               let days = 14;
               let today = new Date();
               twoWeeks.push(today)
               for(let i = 0; i < days-1; i++) {
                    var next = new Date();
                    next.setDate(today.getDate()+1);
                    twoWeeks.push(next);
                    today = next;
               }
               console.log('twoWeeks===',twoWeeks )
}
getTwoWeeks();
0 голосов
/ 11 апреля 2020

похоже, вы неправильно используете свой индекс "i" в для l oop. days не является массивом, это целое число. Попробуйте следующее:

let twoWeeks = [];
let days = 14;
let today = new Date;
let calcDate = new Date(today.setDate(today.getDate() - today.getDay()));

for(let i=0; i<days; i++) {
  calcDate.setDate(calcDate.getDate() + 1)
  twoWeeks.push(new Date(calcDate))
}

console.log(twoWeeks)

Надеюсь, это поможет!

...