Prashant Patil
Prashant Patil

Reputation: 2563

How to get previous week days and next 2 weeks in array?

I have implemented this view (screenshot): enter image description here

now it is current week by default. on next click, I want next week array and same for previous.

Below is the code for current week

this.weekDays = [];
    var startweek = 0;
    
    var curr = new Date; // get current date
    
    for (let i = 0; i <= 6; i++) {
      let first = curr.getDate() - curr.getDay() + i;
      let day = new Date(curr.setDate(first)).toISOString().slice(0, 10)
      this.weekDays.push(day)
    }

    console.log(this.weekDays)

So I got the array of dates:

[ "2020-07-26", "2020-07-27", "2020-07-28", "2020-07-29", "2020-07-30", "2020-07-31", "2020-08-01" ]

Now I need the same type of array of next week and previous week. How to get this array?

Upvotes: 1

Views: 1185

Answers (2)

crosen9999
crosen9999

Reputation: 823

function getWeekFromStartDay(start) {
  var weekDays = [];
  var curr = new Date(); // get current date
  var first = curr.getDate() - curr.getDay() + start;

  for (let i = first; i < first + 7; i++) {
    let day = new Date(curr.setDate(i)).toISOString().slice(0, 10);
    weekDays.push(day);
  }
  return weekDays;
}

console.log("Last week");
console.log(getWeekFromStartDay(-7));

console.log("This week");
console.log(getWeekFromStartDay(0));

console.log("Next week");
console.log(getWeekFromStartDay(7));

Upvotes: 2

Adrian Brand
Adrian Brand

Reputation: 21638

const dates = (startDate, num) => Array.from(
  { length: num },
  (_, i) => new Date(startDate.getTime() + (i * 60000 * 60 * 24)).toISOString().slice(0, 10)
);

const lastWeek = () => {
  let date = new Date();
  date.setDate(date.getDate() - date.getDay() - 6);
  return dates(date, 7);
}

const nextWeek = () => {
  let date = new Date();
  date.setDate(date.getDate() - date.getDay() + 8);
  return dates(date, 7);
}

console.log(lastWeek());

console.log(nextWeek());

Upvotes: 1

Related Questions