Ответ 1
Это сделает:
var d = new Date();
d.setDate(d.getDate() + (1 + 7 - d.getDay()) % 7);
console.log(d);
Как я могу получить следующий понедельник в JavaScript? Я не могу найти что-либо из этого в Интернете, и я также пробовал много кодов и понимал это, но я не могу этого сделать.
Здесь мой код:
var d = new Date();
var day = d.getDay();
d = new Date(d.setDate(d.getDate() + day + (day == 0 ? -6 : 2)));
Это сделает:
var d = new Date();
d.setDate(d.getDate() + (1 + 7 - d.getDay()) % 7);
console.log(d);
Это даст следующий понедельник, если сегодня понедельник
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);
Используя moment.js,
moment().add(7, 'days').calendar();
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;
}
попробуйте это,
d = new Date(d);
var day = d.getDay(),
diff = d.getDate() - day + (day == 0 ? -6:1);
alert(new Date(d.setDate(diff)));
Спасибо Amit
Если вам нужно обрабатывать часовые пояса, одним из вариантов будет использование методов UTCDate setUTCDate() и getUTCDate(). Это позволяет обеспечить согласованность, поэтому вычисление будет одинаковым независимо от настройки часового пояса.
var d = new Date();
d.setUTCDate(d.getUTCDate() + (7 - d.getUTCDay()) % 7 + 1);
(Это пример сверху, где в понедельник возвращается следующий понедельник)
Если фактический день недели, который вы хотите, является переменным (воскресенье, четверг и т.д.), И вы хотите выбрать, может ли сегодняшний день быть возможным совпадением или нет, возможно, вы хотите начать с другой даты (вместо сегодня), тогда эта функция может быть полезна:
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));