Номер недели в году кажется простым понятием, пока не выясняется, что разные системы считают его по-разному — и один и тот же день может иметь разный номер недели в зависимости от используемого стандарта.
Система ISO 8601
По стандарту ISO 8601, неделя начинается с понедельника, а первая неделя года — та, что содержит первый четверг января (эквивалентно: первая неделя содержит 4 января). Это значит, что 1 января иногда попадает в последнюю неделю (52-ю или 53-ю) предыдущего года. В России этот же принцип закреплён в национальном стандарте ГОСТ ИСО 8601, поэтому «номер недели» в 1С, Excel (функция НОМНЕДЕЛИ.ISO) и трудовых графиках обычно совпадает с международным ISO-номером.
Почему именно «первый четверг»
Правило гарантирует, что большинство дней первой недели (по крайней мере 4 из 7) приходятся на новый год — это согласованный компромисс, который избегает ситуаций, когда «первая неделя» состоит лишь из одного-двух дней нового года.
Альтернативные системы нумерации
В США недели традиционно считают с воскресенья, а первая неделя года — та, что содержит 1 января, независимо от того, сколько дней нового года в ней фактически есть. Это приводит к расхождениям с ISO-нумерацией на границе года — важно учитывать при работе с американскими API или экспортированными из зарубежных систем отчётами.
Зачем это нужно
- Согласовать нумерацию недель в отчётности между системами, использующими разные стандарты.
- Правильно подписывать рабочие недели в планировщиках и календарях.
- Избежать ошибок при парсинге номеров недель из внешних API или файлов.
Почему в некоторых годах есть 53-я неделя
Большинство лет имеют 52 ISO-недели, но год, начинающийся в четверг (или високосный год, начинающийся в среду), имеет 53 недели — это следствие того, что 52 × 7 = 364 дня, то есть на один-два дня меньше календарного года, и эти «лишние» дни периодически формируют дополнительную неделю. Код, который жёстко предполагает максимум 52 недели, рано или поздно столкнётся с этим граничным случаем.