Код:
function getPreviousSunday()
{
var today=new Date();
return new Date().setDate(today.getDate()-today.getDay()-7);
}
function getPreviousMonday()
{
var today=new Date();
if(today.getDay() != 0)
return new Date().setDate(today.getDate()-7-6);
else
return new Date().setDate(today.getDate()-today.getDay()-6);
}
Рассуждение:
Зависит от того, что вы подразумеваете под первым днем предыдущей недели. Я предполагаю, что вы имеете в виду предыдущее воскресенье ради этой дискуссии.
Чтобы узнать количество дней для вычитания:
- Получить текущий день недели.
- Если текущий день недели - воскресенье, вы вычитаете 7 дней
- Если текущий день - понедельник, вычтите 8 дней
...
- Если текущий день суббота, 13 дней
Фактический код после определения количества дней для вычитания очень прост:
var previous_first_day_of_week=new Date().setDate(today.getDate()-X);
Где X - обсуждаемое выше значение. Это значение сегодня. GetDay () + 7
Если к первому дню недели вы имели в виду что-то другое, вы должны быть в состоянии вывести ответ из вышеуказанных шагов.
Примечание: допустимо передавать отрицательные значения в функцию setDate, и она будет работать правильно.
За код около понедельника. Это особый случай, потому что getDay () заказывает воскресенье до понедельника. Таким образом, мы в основном заменяем getDay () в этом случае на значение субботы getDay () + 1, чтобы переупорядочить воскресенье до конца недели.
Мы используем значение 6 для вычитания с понедельником, потому что getDay () возвращает на 1 выше для каждого дня, чем мы хотим.