#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)