Получение следующей даты для определенного дня недели

Учитывая дату начала 2014-07-08 (вторник), я хотел бы выполнить проверку, чтобы найти ближайший день недели.

Например, мне нужно иметь возможность выполнять следующие вызовы:

  • Первый понедельник (должен вернуться 14 июля 2014 г.)
  • Первая среда (должен вернуться 9 июля 2014 г.)
  • Первая суббота (должен вернуться 12 июля 2014 г.)
  • И т.п.

Я знаю, что moment.js позволяет вам делать что-то вроде

moment("2014-07-08").day(1)

Однако, чтобы получить дату понедельника на этой неделе, мне нужно знать, находится ли индекс DOW до/после текущей даты, и соответствующим образом применить смещение; если это имеет смысл..

Есть предположения?


person Nate Strandberg    schedule 09.07.2014    source источник
comment
Какой первый день недели, понедельник или воскресенье?   -  person RobG    schedule 09.07.2014


Ответы (1)


Просто добавьте 7, если искомый день недели предшествует текущему дню недели:

var date = moment("2014-07-08");
var dow = date.day();
var nextX = date.day(X + dow <= X ? 7 : 0);
person Felix Kling    schedule 09.07.2014