Как получить дату первого дня недели, зная номер недели?

Рейтинг: 0Ответов: 1Опубликовано: 19.03.2023

Для примера, возьмем 10 неделю в году.

Предположим, на дворе 2023 год. Если посмотреть на календарь с номерами недель, то увидим, что в 10 неделю попадают дни начиная с 6 марта (пн) и заканчивая 12 марта (вс).

Как на языке javascript узнать, что первый день (пн) выбранной недели, это 6 марта?

В идеале, это должна быть функция, которая на вход получает номер недели, и возвращает строку с датой. Например, такую: "2023-03-06T00:00"

Ответы

▲ 0

const dateByWeekNumber = (year, week) => {
  // Cоздаём дату, гарантированно входящую в первую неделю.
  const date = new Date(year, 0, 7);
  // Откатываемся до первого четверга года
  // По ГОСТ ИСО 8601-2001 первая неделя года должна содержать четверг
  date.setDate(date.getDate() - (date.getDay() + 10) % 7);
  // Переходим в нужную неделю
  date.setDate(date.getDate() + (week - 1) * 7);
  // Откатываемся до понедельника
  date.setDate(date.getDate() - 3);
  return date;
};
console.log(dateByWeekNumber(2023, 10));
//  Date Mon Mar 06 2023 00:00:00 GMT+0300 (Москва, стандартное время)
console.log(dateByWeekNumber(2020, 1));
// Date Mon Dec 30 2019 00:00:00 GMT+0300 (Москва, стандартное время)

Ответ получен на сервисе https://qna.habr.com/q/1263658, дан пользователем @Rsa97