Калькулятор номера недели ISO-8601

Неделя ISO начинается в понедельник. Неделя 1 — та, где есть 4 января (четверг этой недели). 31 декабря 2019 — неделя 1 года 2020. Обратно: понедельник этой недели.

Неделя с понедельника

Номер недели ISO-8601 нумерует семидневки, которые начинаются в понедельник. Неделя 1 года — та, в которой есть 4 января; равносильно: та, чей четверг лежит в этом календарном году. Воскресенье в этой системе — седьмой день, не первый.

Контроль: 2020-01-01 → неделя 1, год недели 2020. Раздел: даты и время. 2019-12-31 → тоже неделя 1, но год недели уже 2020. 2021-01-01 → неделя 53 года 2020.

Обратный ход не выбирает «любой день недели»: страница всегда возвращает понедельник. Остальные шесть дат той же недели получите сдвигом на 1…6.

ISO-8601: четверг и 4 января

номер ISO-недели даты d

Алгоритм: сдвинуть дату к четвергу её недели, взять год этого четверга как год недели, отсчитать, какая по счёту неделя от понедельника недели, содержащей 4 января.

Поля: дата d, номер w от 1 до 53, год недели y. y может не совпасть с годом в надписи даты — это не ошибка, это стандарт.

Не неделя с воскресенья

Не американский календарь, где неделя часто стартует в воскресенье и 1 января всегда «неделя 1» календарного года. Не Δ суток и не счёт пн–пт. Не учебная четверть и не «неделя семестра». Не возраст.

Не номер ISO-года документа отдельно от недели: y здесь именно год недели.

Как пользоваться

Из даты получите w или y. Из года недели и номера — понедельник. w = 0 и w = 54 нельзя. w = 53 только если этот ISO-год действительно длинный.

Родитель практика. Если нужно «сколько суток до понедельника», удобнее разница дат после того, как нашли понедельник.

Примеры

1. Новый год 2020. 2020-01-01 → w = 1, y = 2020.

2. Канун. 2019-12-31 → w = 1, y = 2020.

3. 1 января 2021. → w = 53, y = 2020.

4. Год недели. С той же даты 2020-01-01 → y = 2020, extras w = 1.

5. Понедельник W01. y = 2020, w = 1 → 2019-12-30.

6. Понедельник W53. y = 2020, w = 53 → 2020-12-28.

7. Нет 53-й. y = 2021, w = 53 — отказ.

8. Ноль. w = 0 — отказ.

Ещё задачи

Планер «неделя 12»: найдите понедельник, затем воскресенье = понедельник + 6 через n = 6. Не кладите воскресенье в обратный ход — страница его не выдаёт.

Отчёт «по ISO-неделям» за конец декабря: проверьте y. 31 декабря часто принадлежит неделе следующего года. Иначе суммируете не те семь дней.

Якорь: 2019-12-31 и 2020-01-01 — одна неделя 1 года 2020.

Связь с буднями: внутри ISO-недели пять пн–пт, если не смотреть праздники. Номер недели это не заменяет.

Не проценты: «прошла половина года» — не номер недели.

Високос влияет на то, будет ли у года неделя 53 (год, который начинается или кончается четвергом, длинный). Страница не просит это заучивать: отказ на несуществующей 53-й достаточная проверка.

Две даты одной недели: их w совпадают и y совпадает. Если w совпал, а y нет — это разные годы, случай почти невозможный на соседних днях, кроме стыка 53/1.

Стык 53→1: 2020-12-28 понедельник W53, 2021-01-04 понедельник W01 года 2021. Между ними 7 суток.

Школьный дневник «неделя 1 сентября»: это не ISO. 1 сентября может быть неделей 35 или 36 — смотрите дату, не номер четверти.

Школа: семь клеток, старт в пн

Образ: лента, каждые семь клеток — коробка, левый край коробки всегда понедельник. Номер коробки берётся по тому, в какой календарный год попал четверг коробки.

Памятка: воскресенье справа, не слева. 4 января всегда в неделе 1.

Контроль: понедельник недели 1 года 2020 — 30 декабря 2019, не 6 января.

Итог: три поля, w от 1 до 53, несуществующая 53-я нельзя.

Чертёж: семь клеток пн…вс, кружок на четверге, подпись w и y.

Хаб дат ставит ISO-неделю рядом с табелем, чтобы не склеить «номер» и «сколько будней».

31 декабря, неделя 53, понедельник

Бухгалтерский отчёт «неделя 1» в первую январскую семидневку может не совпасть с ISO, если фирма считает с 1 января. Для ISO смотрите четверг.

Спортивный календарь «week 53» бывает раз в несколько лет. Нет 53-й — не ломайте поле, возьмите неделю 1 следующего ISO-года и её понедельник.

Якорь понедельника 2020-W53: 28 декабря 2020.

Родитель практика. Возраст человека к номеру недели не привязан: YMD.

Год недели ≠ календарный год

Три-четыре дня в конце декабря и начале января регулярно «чужие». Это не баг календаря JS и не високос сам по себе, а правило четверга.

Проверка: 2019-12-31 и 2020-01-01 дают один w и один y. 2021-01-01 даёт w = 53 и y = 2020.

Не ищите воскресенье как якорь недели. Якорь — понедельник и четверг.

Сосед по суткам: Δ.

Формат даты только ISO ГГГГ-ММ-ДД. Год недели — целое, можно исторический, но пролептический григорианский после реформы 1918 в учебнике обычно не спорит.

w с leading zero вроде «01» поле числа приведёт к 1. Текстовый «2020-W01» страница не разбирает: два поля y и w.

Типичные ошибки

  • Считать 1 января всегда неделей 1 календарного года.
  • Начинать неделю с воскресенья.
  • Ждать, что обратный ход вернёт ту же дату, а не понедельник.
  • Вводить неделю 53 в короткий ISO-год.
  • Путать номер недели с числом рабочих дней.

Соседи: разница дат, прибавить дни, рабочие дни, возраст.

Частые вопросы

Какой номер недели у 1 января 2020?
Неделя 1 года 2020. 1 января 2020 — среда, она лежит в неделе, которая началась в понедельник 30 декабря 2019.
Почему 31 декабря 2019 — неделя 1?
Эта неделя содержит четверг 2 января 2020 и 4 января 2020, значит это неделя 1 ISO-года 2020, хотя календарный год ещё 2019.
Что выдаёт обратный ход?
Понедельник этой ISO-недели. Для 2020-W01 это 2019-12-30, не 1 января.
Всегда ли есть неделя 53?
Нет. 2020-W53 есть (понедельник 28 декабря 2020). У 2021 недели 53 нет — страница откажет.
Это рабочие дни?
Табель пн–пт считает будни между датами. Номер недели — ярлык семидневки, не число рабочих.