функция, возвращающая две календарные даты для представления даты понедельника и даты воскресенья в соответствии с календарной датой, которая является параметром

#javascript #date-manipulation

#javascript #манипулирование датой

Вопрос:

Можете ли вы помочь мне с функцией, которая получает параметр, который является календарной датой (12.4.2020) и возвращает мне две даты, которые представляют даты понедельника и воскресенья (30.11.2020 — 12.06.2020).

Что у меня есть до сих пор:

 function getWeek(d){
 findDayOfWeek = new Date(d).getDay(); // for exemple if d is 12.04.2020 that line will return 5 that mean friday
}
 

но теперь я заблокирован. Я не знаю, как это продолжить.

Спасибо!

Ответ №1:

Вы можете создать 2 функции, которые возвращают FirstDayOfWeek и lastDayOfWeek, например

 function firstDayOfWeek(dateObject, firstDayOfWeekIndex) {

    const dayOfWeek = dateObject.getDay(),
        firstDayOfWeek = new Date(dateObject),
        diff = dayOfWeek >= firstDayOfWeekIndex ?
            dayOfWeek - firstDayOfWeekIndex :
            6 - dayOfWeek

    firstDayOfWeek.setDate(dateObject.getDate() - diff)
    firstDayOfWeek.setHours(0,0,0,0)

    return firstDayOfWeek
}
 

и

 function lastDayOfWeek(dateObject, lastDayOfWeekIndex) {

    const dayOfWeek = dateObject.getDay(),
        lastDayOfWeek = new Date(dateObject),
        diff = dayOfWeek <= lastDayOfWeekIndex ?
            dayOfWeek - lastDayOfWeekIndex :
            6 - dayOfWeek

    lastDayOfWeek.setDate(dateObject.getDate() - diff)
    lastDayOfWeek.setHours(0,0,0,0)

    return lastDayOfWeek
}
 

теперь вы можете вызывать эти функции

 let lastMonday = firstDayOfWeek(new Date(), 1)
let nextSunday = lastDayOfWeek((new Date(), 7)