Ближайшая дата занятия подставляется автоматически по дням недели.
time.<script>
// Инструкция по смене даты проведения
// Каждому дню недели соответсвует число
// 0 - вс, 1 - пн, 2 - вт, 3 - ср, 4 - чт, 5 - пт, 6 - сб
// Чтобы установить дни недели, в которые нужно выводить дату проведения занятия
// нужно установить числовые значения в массив (по порядку от 0 до 6) как в примере ниже
// const arr = [0, 1, 2, 3, 4, 5, 6] - в данном случае дата проведения будет выставляться каждый день
// Если в какой-то из дней недели мы не хотим проводить занятие, то необходим вместо
// числа, соответствующего дню недели вставить - null (ниже пример)
// const arr = [0, null, null, null, 4, null, null] - в данном случае дата проведения выпадает на вc и чт
const arr = [0, 1, 2, 3, 4, 5, 6];
const timeStartHours = 18;
const timeStartMin = '00 Мск';
const months = ['января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря'];
function setStartDate() {
let now = new Date(),
currentWeekDay = now.getDay(),
currentMonthDay = now.getDate();
let upDays = 0;
if (arr[currentWeekDay] === currentWeekDay && now.getHours() >= timeStartHours) {
upDays++;
currentWeekDay++;
}
let flag = true;
while (flag) {
for (let i = currentWeekDay; i < 7; i++) {
if (arr[i] === i) {
flag = false;
break;
}
if (flag) upDays++;
}
if (flag) currentWeekDay = 0;
}
let currentMonth = now.getMonth(),
nextMonth = now.getMonth(),
nextMonthDay = null,
dateData = '';
if (currentMonthDay + upDays <= getLastDayOfMonth(now.getFullYear(), currentMonth)) {
nextMonthDay = currentMonthDay + upDays;
} else {
nextMonth = nextMonth !== 11 ? nextMonth + 1 : 0;
nextMonthDay = upDays - (getLastDayOfMonth(now.getFullYear(), currentMonth) - currentMonthDay);
}
dateData = `${nextMonthDay} ${months[nextMonth]} ${timeStartHours}:${timeStartMin}`;
document.querySelectorAll('.time').forEach(function (e) {
e.innerHTML = dateData;
});
}
function getLastDayOfMonth(year, month) {
let date = new Date(year, month + 1, 0);
return date.getDate();
}
function checkArray(array) {
if (array.length !== 7) {
return false;
}
let flag = false;
for (let i = 0; i <= 6; i++) {
if (array.includes(i)) flag = true;
}
if (flag) {
for (let j = 0; j < array.length; j++) {
if (array[j] !== j && array[j] !== null) {
flag = false;
}
}
}
return flag;
}
if (checkArray(arr)) {
setStartDate();
}
let isContentShowed = false;
window.addEventListener('scroll', () => {
if (isContentShowed === false) {
isContentShowed = true;
document.querySelector('.main').style.display = 'block';
}
});
</script>
<style>
/*Стиль текста даты — сначала создаешь простую дату и
через инспектор копируешь все ее данные: шрифт, цвет и т.д
Потом эти данные вставляешь ниже и уже тогда назначаешь имя «time» для даты*/
.time {
color: #000000;
font-size: 25px;
font-family: 'Montserrat',Arial,sans-serif;
line-height: 1.55;
font-weight: 600;
background-position: center center;
border-color: transparent;
border-style: solid;
</style>