ISO brojevi nedelja objašnjeni — zašto je 1. januar ponekad u nedelji 52

Većina ljudi pretpostavlja da je nedelja 1 prva nedelja januara. Nije — bar ne po ISO 8601, međunarodnom standardu koji se koristi širom većeg dela Evrope, u proizvodnji, emitovanju i poslovnom softveru širom sveta.

Po ISO 8601, nedelja 1 je nedelja koja sadrži prvi četvrtak u godini. To jedno pravilo određuje sve, uključujući i neke rezultate koji deluju pogrešno dok ne razumeš logiku.

Četiri pravila ISO numerisanja nedelja

Sve proizilazi iz četiri činjenice:

1. Nedelje uvek traju od ponedeljka do nedelje 2. Nedelja 1 je nedelja koja sadrži prvi četvrtak u godini 3. Godina ima 52 ili 53 nedelje 4. Broj nedelje pripada godini u kojoj se nalazi njen četvrtak — ne njen ponedeljak

Ovaj poslednji deo je ono što najčešće zbunjuje. Godina kojoj nedelja pripada određuje se po tome gde je četvrtak, ne po tome gde je većina dana.

Zašto baš četvrtak?

Pravilo četvrtka postoji jer garantuje da nedelja 1 uvek sadrži najmanje 4 dana nove godine. Isto je kao da kažeš: nedelja 1 je nedelja koja sadrži 4. januar (pošto je 4. januar uvek u prvoj nedelji po ovoj definiciji).

Praktičan efekat: ako 1. januar padne u petak, subotu ili nedelju, on je deo poslednje nedelje prethodne godine — jer je četvrtak te nedelje u decembru.

Slučajevi na prelazu godine

Tu postaje zanimljivo:

1. januar može pasti u nedelju 52 ili 53 prethodne godine.

Ako je 1. januar petak: četvrtak te nedelje je 31. decembar. Nedelja pripada prošloj godini. Ako je 1. januar subota: četvrtak je 30. decembar. Isto — prošla godina. Ako je 1. januar nedelja: četvrtak je 28. decembar. I dalje prošla godina.

U tim slučajevima, 1, 2 ili čak 3. januar mogu nositi broj nedelje prethodne godine.

31. decembar može pasti u nedelju 1 sledeće godine.

Ako je 31. decembar ponedeljak, utorak ili sreda: četvrtak te nedelje je u januaru. Nedelja pripada sledećoj godini.

Dan 1. januaraPočetak nedelje 11. januar je u nedelji
Ponedeljak1. januar1
Utorak31. decembar1
Sreda30. decembar1
Četvrtak29. decembar1
Petak4. januar52 ili 53 prethodne godine
Subota3. januar52 ili 53 prethodne godine
Nedelja2. januar52 ili 53 prethodne godine

Koliko nedelja ima godina?

Većina godina ima 52 nedelje. Neke imaju 53.

Godina dobije 53. nedelju kada 1. januar padne u četvrtak (bilo koje godine) ili kada 1. januar padne u sredu u prestupnoj godini. Oko 71% godina ima 52 nedelje; približno 29% ima 53.

Godine sa 53 nedelje u skorijoj prošlosti i bliskoj budućnosti: 2004, 2009, 2015, 2020, 2026, 2032.

ISO nedelje vs. US stil numerisanja nedelja

Američki sistem — i sistemi koji ga prate — definišu nedelju 1 drugačije: to je jednostavno nedelja koja sadrži 1. januar. Nedelje traju od nedelje do subote.

To daje različite rezultate, posebno oko prelaza godine:

DatumISO nedeljaUS nedelja
1. januar 2023 (nedelja)Nedelja 52, 2022Nedelja 1, 2023
1. januar 2024 (ponedeljak)Nedelja 1, 2024Nedelja 1, 2024
31. decembar 2024 (utorak)Nedelja 1, 2025Nedelja 53, 2024

SQL Server-ov DATEPART(week, ...) podrazumevano koristi US sistem. Excel-ov WEEKNUM() podrazumevano koristi US stil. PostgreSQL-ov EXTRACT(week ...) prati ISO. Python-ov isocalendar() je ISO. JavaScript nema ugrađeno — računaš ručno ili koristiš biblioteku.

Ova neusklađenost pravi suptilne bagove kada brojevi nedelja prelaze između sistema. Ako se izveštaj generisan u Excel-u poredi sa podacima iz PostgreSQL upita blizu decembra ili januara, brojevi nedelja mogu da se ne poklope.

Praktične upotrebe ISO brojeva nedelja

Proizvodnja i lanci snabdevanja

ISO nedelje su „zajednički jezik” planiranja proizvodnje. Fabrčki raspored za „W14” znači isto dobavljaču u Nemačkoj, logističkom timu u Holandiji i izveštaju kontrole kvaliteta u UK. Broj nedelje je jednoznačan; kalendarski datumi često nisu.

Emitovanje (broadcasting)

TV rejting, reklamni slotovi i rasporedi emitovanja organizovani su po broju nedelje. Kampanja „Week 1” počinje u ponedeljak ISO nedelje 1 — tačka. To omogućava međunarodnim produkcijama koordinaciju preko vremenskih zona i kalendara bez stalnog prevođenja datuma.

Planiranje projekata

Mnogi enterprise alati (SAP, Jira, Microsoft Project) prikazuju vremenske linije u ISO brojevima nedelja. Planiranje sprintova, prozori isporuke i planiranje kapaciteta dobijaju na jasnoći kroz dosledan, celogodišnji sistem koji se ne „resetuje” usred nedelje.

Finansijsko izveštavanje

Neke kompanije izveštavaju kvartale usklađene sa ISO nedeljama umesto sa kalendarskim mesecima, jer ISO nedelje daju periode jednake dužine. Kvartali od 13 nedelja (ciklusi 4+4+5 nedelja) su česti u maloprodaji.

Poljoprivreda i proizvodnja hrane

Oznake tipa „najbolje upotrebiti do nedelje 32” na pakovanjima prate ISO numerisanje. Format nedeljne godine YYYY-Www (npr. 2024-W32) je validan ISO 8601 format datuma i pojavljuje se na deklaracijama, serijskim zapisima i praćenju roka trajanja u prehrambenoj industriji.

Pisanje ISO nedeljnih datuma

ISO 8601 definiše standardnu notaciju za nedeljne datume:

YYYY-Www-D

Gde:

  • YYYY je ISO nedeljna godina (može se razlikovati od kalendarske na granicama)
  • Www je broj nedelje, sa vodećom nulom, prefiksovan slovom W
  • D je broj dana: 1 = ponedeljak, 7 = nedelja

Primeri:

  • 2024-W01-1 = ponedeljak ISO nedelje 1, 2024 (1. januar 2024)
  • 2024-W53-5 = petak ISO nedelje 53, 2024 (3. januar 2025)
  • 2026-W01-4 = četvrtak ISO nedelje 1, 2026 (1. januar 2026)

Obrati pažnju: 2024-W53-5 pripada nedeljnoj godini 2024 iako je datum u januaru 2025. To je ISO nedeljna godina, ne kalendarska.

Računanje ISO brojeva nedelja

Formula je jasno definisana, ali nije trivijalno implementirati ispravno. Opšti pristup:

1. Nađi četvrtak u nedelji koja sadrži tvoj datum (dodaj/oduzmi dane dok ne dođeš do četvrtka) 2. Odredi kojoj godini pripada taj četvrtak 3. Prebroj koliko nedelja ima od 4. januara te godine do tog četvrtka (pošto je 4. januar uvek u nedelji 1)

U praksi, koristi ugrađeno u jeziku:

// Python — returns (year, week, weekday)
from datetime import date
date(2024, 12, 31).isocalendar()
# IsoCalendarDate(year=2025, week=1, weekday=2)

// JavaScript — no built-in, manual calculation
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');
-- Returns 1 (ISO week 1 of 2025)

// SQL Server — ISOWK is ISO-compliant
SELECT DATEPART(isowk, '2024-12-31');

Česte greške

Korišćenje kalendarske godine umesto ISO nedeljne godine. 31. decembar 2024 je u nedelji 1 za 2025, ne u nedelji 53 za 2024. Ako ga obeležiš kao „2024-W01”, godina je pogrešna.

Pretpostavka da nedelja 1 počinje 1. januara. Ne počinje. 1. januar često nije u nedelji 1.

Mešanje US i ISO brojeva nedelja u istom izveštaju. Ako jedan izvor koristi ISO a drugi US stil, dobićeš tihe neslaganja oko kraja godine koja su teška za debagovanje.

Off-by-one u brojanju nedelja. Neke implementacije vraćaju nedelju 0 za rani januar koji pripada prošloj godini. Tačan odgovor je broj nedelje iz prethodne godine, ne 0.

Šta „W01” znači u praksi

Najlakše za pamćenje: ISO nedelja 1 je prva nedelja u godini koja ima većinu svojih dana u novoj godini. Većina znači najmanje 4 od 7 dana.

Nedelja koja prelazi preko decembra i januara pripada onoj godini koja dobije više dana. Četvrtak je srednji dan sedmodnevne nedelje koja počinje u ponedeljak, zato četvrtak služi kao „tiebreaker”.

Provera broja nedelje za bilo koji datum

ISO kalkulator broja nedelje prikazuje broj nedelje za bilo koji datum, uključujući kompletan opseg ponedeljak–nedelja za tu nedelju i ceo godišnji kalendar. Takođe možeš proveriti današnji ISO broj nedelje direktno na stranici trenutni broj nedelje.