Пояснення номерів тижнів ISO — чому 1 січня іноді є тижнем 52
Більшість людей вважають, що тиждень 1 — це перший тиждень січня. Це не так — принаймні згідно з ISO 8601, міжнародним стандартом, який використовується по всій Європі, у виробництві, мовленні та бізнес-програмному забезпеченні по всьому світу.
Згідно з ISO 8601, тиждень 1 — це тиждень, що містить перший четвер року. Це єдине правило визначає все, включаючи деякі результати, які здаються неправильними, доки ви не зрозумієте логіку.
Чотири правила нумерації тижнів ISO
Все випливає з чотирьох фактів:
1. Тижні завжди тривають з понеділка по неділю 2. Тиждень 1 — це тиждень, що містить перший четвер року 3. У році 52 або 53 тижні 4. Номер тижня належить до року, що містить його четвер, а не його понеділок
Останній пункт — той, на якому люди спотикаються. Рік, до якого належить тиждень, визначається тим, де припадає його четвер, а не тим, яка більшість днів.
Чому четвер?
Правило четверга існує тому, що воно гарантує, що тиждень 1 завжди містить щонайменше 4 дні нового року. Це також еквівалентно твердженню: тиждень 1 — це тиждень, що містить 4 січня (оскільки 4 січня завжди є в першому тижні за цим визначенням).
Практичний ефект: якщо 1 січня припадає на п'ятницю, суботу або неділю, воно є частиною останнього тижня попереднього року, оскільки четвер того тижня — в грудні.
Випадки на межі року
Ось де стає цікаво:
1 січня може потрапити в тиждень 52 або 53 попереднього року.
Якщо 1 січня — п'ятниця: четвер того тижня — 31 грудня. Тиждень належить минулому року. Якщо 1 січня — субота: четвер — 30 грудня. Те саме — тиждень минулого року. Якщо 1 січня — неділя: четвер — 28 грудня. Все одно минулий рік.
У цих випадках 1, 2 або навіть 3 січня можуть мати номер тижня попереднього року.
31 грудня може потрапити в тиждень 1 наступного року.
Якщо 31 грудня — понеділок, вівторок або середа: четвер того тижня — в січні. Тиждень належить наступному року.
| День 1 січня | Тиждень 1 починається | 1 січня в тижні |
|---|---|---|
| Понеділок | 1 січня | 1 |
| Вівторок | 31 грудня | 1 |
| Середа | 30 грудня | 1 |
| Четвер | 29 грудня | 1 |
| П'ятниця | 4 січня | 52 або 53 попереднього року |
| Субота | 3 січня | 52 або 53 попереднього року |
| Неділя | 2 січня | 52 або 53 попереднього року |
Скільки тижнів у році?
У більшості років 52 тижні. У деяких — 53.
Рік отримує 53-й тиждень, коли 1 січня припадає на четвер (будь-який рік), або коли 1 січня припадає на середу у високосному році. Приблизно 71% років мають 52 тижні; приблизно 29% — 53.
Роки з 53 тижнями в недавньому минулому та найближчому майбутньому: 2004, 2009, 2015, 2020, 2026, 2032.
Тижні ISO порівняно з нумерацією тижнів у стилі США
Система США — і системи, які її дотримуються, — визначають тиждень 1 інакше: це просто тиждень, що містить 1 січня. Тижні тривають із неділі по суботу.
Це дає різні результати, особливо поблизу меж років:
| Дата | Тиждень ISO | Тиждень США |
|---|---|---|
| 1 січня 2023 (неділя) | Тиждень 52, 2022 | Тиждень 1, 2023 |
| 1 січня 2024 (понеділок) | Тиждень 1, 2024 | Тиждень 1, 2024 |
| 31 грудня 2024 (вівторок) | Тиждень 1, 2025 | Тиждень 53, 2024 |
DATEPART(week, ...) SQL Server за замовчуванням використовує систему США. WEEKNUM() Excel за замовчуванням — у стилі США. EXTRACT(week ...) PostgreSQL слідує ISO. isocalendar() Python — ISO. У JavaScript немає вбудованого — ви обчислюєте вручну або використовуєте бібліотеку.
Ця невідповідність спричиняє непомітні помилки, коли номери тижнів переходять між системами. Якщо звіт, створений в Excel, порівнюється з даними з запиту PostgreSQL поблизу грудня або січня, номери тижнів можуть не збігатися.
Практичне застосування номерів тижнів ISO
Виробництво та ланцюги постачання
Тижні ISO — це спільна мова виробничого планування. Заводський розклад на «W14» означає одне й те саме для постачальника в Німеччині, логістичної команди в Нідерландах і звіту про контроль якості у Великобританії. Номер тижня однозначний; календарні дати — ні.
Мовлення
Рейтинги телебачення, рекламні слоти та розклади мовлення організовані за номерами тижнів. Кампанія «Тиждень 1» починається в понеділок тижня ISO 1, і крапка. Це дозволяє міжнародним виробництвам координуватися в різних часових поясах і календарях без конвертації дат.
Планування проєктів
Багато корпоративних інструментів проєктування (SAP, Jira, Microsoft Project) відображають часові шкали в номерах тижнів ISO. Цикли планування спринтів, вікна доставки та планування потужностей — усі вони виграють від послідовної системи нумерації протягом усього року, яка не скидається в середині тижня.
Фінансова звітність
Деякі компанії звітують про квартальні результати відповідно до тижнів ISO, а не календарних місяців, оскільки тижні ISO дають рівні звітні періоди. Квартали 13 тижнів (цикли 4+4+5 тижнів) поширені в роздрібній торгівлі.
Сільське господарство та харчове виробництво
«Найкраще до Тижня 32» на упакованому продукті дотримується нумерації ISO. Формат тиждень-рік РРРР-Www (наприклад, 2024-W32) є дійсним форматом дати ISO 8601 і з'являється на маркуванні, записах партій та відстеженні терміну зберігання в харчовій промисловості.
Написання дат тижнів ISO
ISO 8601 визначає стандартне позначення для дат тижнів:
РРРР-Www-Д
Де:
РРРР— рік тижня ISO (який може відрізнятися від календарного року на межах)Www— номер тижня, доповнений нулями, з префіксом WД— номер дня: 1 = понеділок, 7 = неділя
Приклади:
2024-W01-1= понеділок тижня ISO 1, 2024 (1 січня 2024)2024-W53-5= п'ятниця тижня ISO 53, 2024 (3 січня 2025)2026-W01-4= четвер тижня ISO 1, 2026 (1 січня 2026)
Зверніть увагу, що 2024-W53-5 належить до тижневого року 2024, навіть якщо дата — в січні 2025. Це рік тижня ISO, а не календарний рік.
Обчислення номерів тижнів ISO
Формула чітко визначена, але не тривіальна для правильної реалізації. Загальний підхід:
1. Знайдіть четвер тижня, що містить вашу дату (додайте або відніміть дні, щоб потрапити на четвер) 2. Визначте, до якого року належить цей четвер 3. Порахуйте, скільки тижнів від 4 січня того року до вашого четверга (оскільки 4 січня завжди в тижні 1)
На практиці використовуйте вбудований засіб вашої мови:
// Python — повертає (рік, тиждень, день тижня)
from datetime import date
date(2024, 12, 31).isocalendar()
# IsoCalendarDate(year=2025, week=1, weekday=2)
// JavaScript — без вбудованого, ручний розрахунок
function isoWeek(date) {
const d = new Date(date)
d.setHours(0, 0, 0, 0)
d.setDate(d.getDate() + 3 - (d.getDay() + 6) % 7)
const week1 = new Date(d.getFullYear(), 0, 4)
return 1 + Math.round(((d - week1) / 86400000 - 3 + (week1.getDay() + 6) % 7) / 7)
}
// PostgreSQL
SELECT EXTRACT(week FROM DATE '2024-12-31');
-- Повертає 1 (тиждень ISO 1 2025)
// SQL Server — ISOWK відповідає ISO
SELECT DATEPART(isowk, '2024-12-31');
Поширені помилки
Використання календарного року замість року тижня ISO. 31 грудня 2024 — в тижні 1 2025, а не в тижні 53 2024. Якщо позначити це як «2024-W01», рік буде неправильним.
Припущення, що тиждень 1 починається 1 січня. Ні. 1 січня часто не є в тижні 1.
Змішування номерів тижнів США та ISO в одному звіті. Якщо одне джерело даних використовує ISO, а інше — стиль США, ви отримаєте непомітні невідповідності наприкінці року, які важко налагодити.
Помилка на одиницю в підрахунку тижнів. Деякі реалізації повертають тиждень 0 для дат на початку січня, які належать до попереднього року. Правильна відповідь — номер тижня з календаря попереднього року, а не 0.
Що «W01» насправді означає на практиці
Найпростіший спосіб запам'ятати: тиждень ISO 1 — це перший тиждень року, що має більшість своїх днів у новому році. Більшість означає щонайменше 4 з 7 днів.
Тиждень, що охоплює грудень і січень, належатиме до того року, який отримує найбільше днів. Четвер — середній день 7-денного тижня, що починається в понеділок, ось чому четвер відіграє роль вирішального арбітра.
Перевірка номера тижня для будь-якої дати
Калькулятор номера тижня ISO показує номер тижня для будь-якої дати, включаючи повний діапазон понеділок–неділя того тижня та повний річний календар. Ви також можете перевірити поточний номер тижня ISO безпосередньо на сторінці поточного номера тижня.


