Принятый ответ работает только в том случае, если вы уже знаете, на этой или на следующей неделе находится рассматриваемый день. Что делать, если ты не знаешь? Вам просто нужен следующий доступный четверг после произвольной даты?
Во-первых, вы хотите знать, больше ли рассматриваемый день, чем тот, который вам нужен. Если он больше, вы хотите использовать на следующей неделе. Если он меньше, вы можете использовать понедельник или четверг той же недели.
const dayINeed = 4; // for Thursday
if (moment().isoWeekday() <= dayINeed) {
return moment().isoWeekday(dayINeed);
} else...
Если мы уже прошли желаемый день (если, например, наш момент - пятница, а нам нужен следующий доступный четверг), то вам нужно решение, которое даст вам «четверг недели, следующий за нашим моментом», независимо от того, в какой день сейчас наш момент, без какого-либо обязательного добавления / вычитания. Короче говоря, вы хотите сначала перейти на следующую неделю, используя moment().add(1, 'weeks')
. На следующей неделе вы можете выбрать любой день этой недели, используя moment().day(1)
.
Вместе это даст вам следующий доступный день, который соответствует вашим требованиям, независимо от того, где находится ваш начальный момент на своей неделе:
const dayINeed = 4; // for Thursday
// if we haven't yet passed the day of the week that I need:
if (moment().isoWeekday() <= dayINeed) {
// then just give me this week's instance of that day
return moment().isoWeekday(dayINeed);
} else {
// otherwise, give me next week's instance of that day
return moment().add(1, 'weeks').isoWeekday(dayINeed);
}
См. Также: https://stackoverflow.com/a/27305748/800457
person
XML
schedule
21.09.2016