Получение даты следующего понедельника

Как я могу получить следующий понедельник в JavaScript? Я не могу найти что-либо из этого в Интернете, и я также пробовал много кодов и понимал это, но я не могу этого сделать.

Здесь мой код:

var d = new Date();
var day = d.getDay();
d = new Date(d.setDate(d.getDate() + day + (day == 0 ? -6 : 2)));

Ответ 1

Это сделает:

var d = new Date();
d.setDate(d.getDate() + (1 + 7 - d.getDay()) % 7);
console.log(d);

Ответ 2

Это даст следующий понедельник, если сегодня понедельник

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

Это произойдет сегодня, если сегодня понедельник.

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

Ответ 3

Используя moment.js,

moment().add(7, 'days').calendar();

Ответ 4

var closestMonday = () => {
    var curr_date = new Date(); // current date
    var day_info = 8.64e+7; // milliseconds per day
    var days_to_monday = 8 - curr_date.getDay(); // days left to closest Monday
    var monday_in_sec = curr_date.getTime() + days_to_monday * day_info; // aleary Monday in seconds from 1970 
    var next_monday = new Date(monday_in_sec); // Monday in date object
    next_monday.setHours(0,0,0);
    return next_monday;
}

Ответ 5

попробуйте это,

d = new Date(d);
var day = d.getDay(),
diff = d.getDate() - day + (day == 0 ? -6:1);
alert(new Date(d.setDate(diff)));

Спасибо Amit

Ответ 6

Если вам нужно обрабатывать часовые пояса, одним из вариантов будет использование методов UTCDate setUTCDate() и getUTCDate(). Это позволяет обеспечить согласованность, поэтому вычисление будет одинаковым независимо от настройки часового пояса.

var d = new Date();
d.setUTCDate(d.getUTCDate() + (7 - d.getUTCDay()) % 7 + 1);

(Это пример сверху, где в понедельник возвращается следующий понедельник)

Ответ 7

Если фактический день недели, который вы хотите, является переменным (воскресенье, четверг и т.д.), И вы хотите выбрать, может ли сегодняшний день быть возможным совпадением или нет, возможно, вы хотите начать с другой даты (вместо сегодня), тогда эта функция может быть полезна:

function getNextDayOfTheWeek(dayName, excludeToday = true, refDate = new Date()) {
    const dayOfWeek = ["sun","mon","tue","wed","thu","fri","sat"]
                      .indexOf(dayName.slice(0,3).toLowerCase());
    if (dayOfWeek < 0) return;
    refDate.setHours(0,0,0,0);
    refDate.setDate(refDate.getDate() + !!excludeToday + 
                    (dayOfWeek + 7 - refDate.getDay() - !!excludeToday) % 7);
    return refDate;
}

console.log("Next is: " + getNextDayOfTheWeek("Wednesday", false));