Неделя с понедельника
Номер недели 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 нет — страница откажет.
- Это рабочие дни?
- Табель пн–пт считает будни между датами. Номер недели — ярлык семидневки, не число рабочих.
- Где хаб?
- Даты и время и практика.