Как вычислить дату (формат: 01.01.0001) по номеру дня недели (от 1 до 7)?
Как определить дату (формат: 01.01.0001
), зная номер текущего дня недели (от 1 до 7)?
Например: текущая неделя - 4
, дата - 12.09.2024
.
Если поставить номер недели 5
, то дата будет 13.09.2024
.
Как это реализовать?
Ответы (1 шт):
Автор решения: Dev18
→ Ссылка
можно воспользоваться getDay(), который выдает дни недели 0-6 начиная с воскресенья, а затем привести к нужному вам формату 1-7
Если текущий день недели воскресенье (0), меняем его на 7, чтобы воскресенье стало последним днём недели
const adjustedCurrentDayOfWeek = currentDayOfWek === 0 ? 7 : currentDayOfWek;
затем расчитать разницу между днями, чтоб вывести, новую собраную дату
function findDate() {
//получаем введённую дату и выбранный день недели
const dateInput = document.getElementById('dateInput').value;
const targetDayOfWeek = parseInt(document.getElementById('dayOfWeekInput').value);
//создаём дату из введённого значения
const startDate = new Date(dateInput);
//определяем день недели для введённой даты (0 - воскресенье, 6 - суббота)
const currentDayOfWek = startDate.getDay();
//преобразуем текущий день недели в формат (1 - понедельник, 7 - воскресенье)
const adjustedCurrentDayOfWeek = currentDayOfWek === 0 ? 7 : currentDayOfWek;
//рассчитываем разницу между текущим и целевым днями недели
const dayDifference = targetDayOfWeek - adjustedCurrentDayOfWeek;
//создаём новую дату, добавив разницу дней
const resultDate = new Date(startDate);
resultDate.setDate(resultDate.getDate() + dayDifference);
//форматируем дату в строку (дд.мм.гггг)
const formattedDate = resultDate.toLocaleDateString('ru-RU', {
day: '2-digit',
month: '2-digit',
year: 'numeric'
});
//результат
var resultText = (resultDate.getDate() === 13 && resultDate.getDay() === 5) ? " ? Пятница 13!" : "";
document.getElementById('result').innerText = `Соответствующая дата: ${formattedDate} ${resultText}`;
}
<h1>календарь текущей даты, по умолчанию 12/09/2024</h1>
<input type="date" id="dateInput" value="2024-09-12"><br>
<h1>выбор дня недели, по умолчанию 5</h1>
<select id="dayOfWeekInput">
<option value="1">1 - Понедельник</option>
<option value="2">2 - Вторник</option>
<option value="3">3 - Среда</option>
<option value="4">4 - Четверг</option>
<option value="5" selected>5 - Пятница</option>
<option value="6">6 - Суббота</option>
<option value="7">7 - Воскресенье</option>
</select><br>
<div style="margin-top:20px;"> Вывод результата:
<button onclick="findDate()">Нажми кнопку, чтоб узнать дату исходя из дня недели</button>
<h1 id="result"></h1>
</div>