Skip to content
Advertisement

How can i get the dates from current day to last monday in react ? suppose i click on tuesday, i want dates of monday, tuesday [closed]

const handleWeek = () => {

    function selectWeek(date) {
         return Array(7).fill(new Date(date)).map((el, idx) =>
           new Date(el.setDate(el.getDate() - el.getDay() + idx)))
       }
    const date = new Date();     
  console.log(selectWeek(date));

}

Advertisement

Answer

Since the number of days you’ll get will vary, it doesn’t make sense to create an array with a specific length up front.

I think I’d just use a do-while loop:

const MONDAY = 1; // The Date.prototype.getDay value for Monday

function selectWeek(date) {
    const dates = [new Date(+date)];
    let dt = new Date(+date);
    do {
        // Move back a day
        dt.setDate(dt.getDate() - 1);
        // Remember this day
        dates.unshift(new Date(+dt));
        // Stop looping when we've just pushed Monday
    } while (dt.getDay() !== MONDAY);
    return dates;
}

console.log(selectWeek(new Date()));

Since you said “last Monday,” that assumes that if you pass in a date that is a Monday, you should get eight days of dates (that day and the entire prior week).

User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement