Как найти последний понедельник с помощью импульсов?

Мне нужно работать с некоторой логикой, для которой неделя начинается в понедельник (а не в воскресенье).

Существует функция начала недели, которую я могу использовать:

moment().tz('America/Los_Angeles').startOf('week').add(1, 'day')

Однако, если это воскресенье, мне нужно использовать дату последней недели и добавить 1, чтобы получить понедельник.

Я надеюсь, что будет проще получить "последний понедельник" независимо от того, какая дата.

Ответы

Ответ 1

Я нашел ответ (задокументирован), но есть isoWeek, который начнет неделю в понедельник вместо воскресенья.

Начальная неделя в воскресенье:

moment().startOf('week');

Начало недели в понедельник:

moment().startOf('isoWeek');

Ответ 2

Не знаю о moment.js, но в простом javascript вы можете получить предыдущий понедельник, получив номер дня, установив его на 7, если это воскресенье, а затем вычтите день число минус один с даты. Если день - понедельник, он возвращает ту же дату.

например.

var d = new Date();
d.setDate(d.getDate() + 1 - (d.getDay() || 7));
document.write(d)

Ответ 3

Чтобы найти последний понедельник, просто используйте

moment().isoWeekday(-6); // ISO day of the week with 1 being Monday and 7 being Sunday.

Или Локальная Aware версия

moment().weekday(-7); // when Monday is the first day of the week

Ответ 4

 // when Monday is the first day of the week
moment().weekday(-7); // last Monday

Обратитесь к официальным документам здесь