Как найти ближайший день недели с помощью date-fns - PullRequest
0 голосов
/ 11 января 2019

Я хочу иметь возможность узнать ближайший день недели в прошлом на основе текущей даты с указанием даты-фн. Скажем, мне нужно найти ближайшую пятницу, среду, четверг и т. Д. В прошлом на основе текущей даты.

Я просмотрел документацию и вижу только эти методы эвакуации https://date -fns.org / docs / closestTo и https://date -fns.org / v1.29.0 / docs / getDay , который, как я думал, может помочь, но тот, который я ищу, отсутствует.

Есть мысли?

1 Ответ

0 голосов
/ 11 января 2019
const { getISODay, addDays } = require('date-fns');

function getClosestDayOfLastWeek(dayOfWeek, fromDate = new Date()) {
    // follow the getISODay format (7 for Sunday, 1 for Monday)
    const dayOfWeekMap = {
        Mon: 1,
        Tue: 2,
        Wed: 3,
        Thur: 4,
        Fri: 5,
        Sat: 6,
        Sun: 7,
    };

    // -7 means last week
    // dayOfWeekMap[dayOfWeek] get the ISODay for the desired dayOfWeek

    // e.g. If today is Sunday, getISODay(fromDate) will returns 7
    // if the day we want to find is Thursday(4), apart from subtracting one week(-7),
    // we also need to account for the days between Sunday(7) and Thursday(4)
    // Hence we need to also subtract (getISODay(fromDate) - dayOfWeekMap[dayOfWeek])
    const offsetDays = -7 - (getISODay(fromDate) - dayOfWeekMap[dayOfWeek]);

    return addDays(fromDate, offsetDays);
}

console.log(getClosestDayOfLastWeek('Mon'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...