Kako izračunati radne tjedne između dva datuma (i zašto je teže nego što izgleda)
Imate dva datuma i trebate znati koliko je radnih tjedana između njih. Zvuči kao problem od pet sekundi. Podijelite dane sa 7, možda oduzmete vikende — gotovo.
Ali nije tako, jer „radni tjedan” nije precizan pojam. Ovisno o tome što računate — otkazni rok, vremenski plan projekta, pravo na dopust, trajanje ugovora — ispravna metoda je drugačija, a pogrešna može promašiti za dane na način koji može biti važan pravno ili financijski.
Što je točno „radni tjedan”?
Najčešće radni tjedan znači pet dana: od ponedjeljka do petka. No postoje rubni slučajevi koje vrijedi znati:
- Neke industrije i zemlje koriste 6-dnevni radni tjedan (ponedjeljak–subota)
- Neke uloge imaju komprimirani 4-dnevni radni tjedan
- Bliski istok je tradicionalno koristio nedjelja–četvrtak, iako je većina zemalja prešla na ponedjeljak–petak
- Radnici s nepunim radnim vremenom mogu imati radni tjedan od 2, 3 ili 4 dana
U ostatku ovog članka „radni tjedan” znači standardni ponedjeljak–petak, osim ako nije drugačije navedeno. Metode se lako generaliziraju kada znate koji su radni dani u vašem slučaju.
Metoda 1: Cijeli radni tjedni
Najjednostavnije tumačenje: koliko se potpunih blokova ponedjeljak–petak uklapa između dva datuma?
To je ono što većina ljudi misli kada pita „koliko je to tjedana otkaznog roka?” Otkazni rok od 4 tjedna znači 4 potpuna bloka ponedjeljak–petak — 20 radnih dana — bez obzira na to u kojem dijelu tjedna pada početni datum.
Izračun:
1. Izbrojite ukupan broj kalendarskih dana između dva datuma 2. Oduzmite vikende: svaki puni blok od 7 dana sadrži 2 dana vikenda 3. Uzmite u obzir djelomične tjedne na početku i na kraju
U praksi je lakše izbrojati radne dane izravno i podijeliti s 5:
working_weeks = working_days / 5
gdje je working_days broj dana od ponedjeljka do petka između dva datuma.
Primjer: 7. travnja (ponedjeljak) do 2. svibnja (petak)
- Kalendarski dani: 25
- Vikendi u rasponu: 4 subote + 4 nedjelje = 8 dana
- Radni dani: 25 − 8 = 17... čekaj, to nije točno.
Ispravan način: brojite ponedjeljke do petaka uključivo:
- Tjedan 1: 7.–11. travnja (5 dana)
- Tjedan 2: 14.–18. travnja (5 dana)
- Tjedan 3: 21.–25. travnja (5 dana)
- Tjedan 4: 28. travnja–2. svibnja (5 dana)
Ukupno: 20 radnih dana = točno 4 radna tjedna.
Budući da primjer počinje u ponedjeljak i završava u petak, ispada „čisto”. Početak ili završetak usred tjedna daje razlomljeni rezultat, što nas vodi na sljedeću metodu.
Metoda 2: Radni dani podijeljeni s 5
Za većinu praktičnih slučajeva — planiranje projekta, procjene vremenskih okvira, izračun kapaciteta — ne trebate cijele tjedne. Trebate radne dane i rezultat izražavate kao tjedne i dane.
Formula:
total_working_days = (full_weeks × 5) + working_days_in_partial_week
weeks = floor(total_working_days / 5)
remaining_days = total_working_days mod 5
Primjer: 18. ožujka (srijeda) do 11. travnja (petak)
Brojanje radnih dana:
- 18. ožujka (sri) do 21. ožujka (pet): 4 dana
- 24.–28. ožujka: 5 dana
- 31. ožujka–4. travnja: 5 dana
- 7.–11. travnja: 5 dana
Ukupno: 19 radnih dana = 3 tjedna i 4 dana.
Ova je metoda dobra za vremenske planove projekata gdje radite s kapacitetom u danima, a ne u kalendarskim tjednima.
Metoda 3: Raspon ISO tjedana
Ponekad „koliko je tjedana između” znači: koja je razlika u ISO brojevima tjedana?
Primjer: Događaj traje od ISO tjedna 10 do ISO tjedna 23. To je 13 ISO tjedana trajanja.
Izračun:
week_span = (end_iso_year × 52.18) + end_iso_week − (start_iso_year × 52.18) + start_iso_week
U praksi, za datume unutar iste godine:
week_span = end_iso_week − start_iso_week
Za datume koji prelaze granicu godine, morate uzeti u obzir je li početna godina imala 52 ili 53 tjedna:
week_span = (52_or_53_for_start_year − start_iso_week) + end_iso_week
Ova je metoda relevantna za rasporede emitiranja, planiranje u maloprodaji i svaki sustav koji organizira rad prema ISO broju tjedna, a ne prema radnim danima.
Problem uključivosti datuma
Jedan od najčešćih izvora pogrešaka: treba li brojati početni datum, završni datum, oba ili nijedan.
„Otkazni rok od 4 tjedna koji počinje danas” može značiti:
- 4 tjedna od danas, pri čemu je danas dan 1 (uključiv početak): razdoblje završava istog dana u tjednu, 4 tjedna kasnije
- 4 tjedna nakon danas (isključiv početak): razdoblje završava jedan dan kasnije nego gore
Radno pravo u većini zemalja to definira izričito. U UK se otkazni rok računa od dana nakon što je otkaz dan. U SAD-u ovisi o ugovoru.
Razlika je jedan dan. U većini slučajeva to nije važno. U radnim sporovima ili raskidima ugovora može biti.
Sigurna konvencija: uvijek navedite „X radnih tjedana od [datum], uključivo/isključivo”. Ne ostavljajte dvosmisleno.
Državni praznici: izračun koji svi zaborave
Izračuni radnih tjedana koji ne uzimaju u obzir državne praznike su po definiciji pogrešni — precjenjuju raspoloživo radno vrijeme.
Izazov je u tome što praznici nisu standardizirani. Razlikuju se po:
- zemlji (Božić je 25. prosinca u UK; u Japanu to nije državni praznik)
- regiji unutar zemlje (američke savezne države imaju različite praznike; Engleska i Škotska imaju različite bank holidays)
- godini (pokretni blagdani poput Uskrsa mijenjaju datum svake godine)
- ugovoru o radu (neki poslovi imaju dodatne neradne dane; neki javni sektor obilježava druge datume)
Za grube procjene — „to je oko 6 radnih tjedana” — ignoriranje praznika je u redu. Za precizne izračune — ugovorne rokove, otkazne rokove, pravne vremenske okvire — morate oduzeti relevantne praznike.
Nijedan kalkulator to ne može automatski napraviti bez poznavanja vaše jurisdikcije i konkretne godine. Kalkulator dana između datuma daje broj radnih dana bez vikenda; vi zatim ručno oduzmete lokalne praznike.
Korisna aproksimacija za UK: oko 8 bank holidays godišnje, otprilike 1,6 mjesečno. Za 3 mjeseca to je oko 5 praznika za oduzeti. Za američke federalne praznike: 11 godišnje, oko 0,9 mjesečno.
Otkazni rokovi: kako matematika zapravo funkcionira
Ugovori o radu često navode otkazni rok u tjednima ili mjesecima. Pretvaranje u radne dane je mjesto gdje se greške najčešće događaju.
„Otkazni rok od 4 tjedna” znači 4 kalendarska tjedna (28 dana), a ne 4 × 5 = 20 radnih dana. Ako je otkaz dan u utorak, rok traje 28 kalendarskih dana — uključujući vikende. Posljednji dan roka je utorak 4 tjedna kasnije.
To iznenadi ljude jer očekuju da „4 tjedna” znači 20 radnih dana. Ne znači — znači 28 kalendarskih dana, a vikendi unutar tog razdoblja se i dalje računaju u otkazni rok, iako se tada ne radi.
„Otkazni rok od 1 mjeseca” je još manje precizan. Mjesec dana od 15. siječnja je 15. veljače. Mjesec dana od 31. siječnja je 28. veljače (ili 29. u prijestupnoj godini). Broj kalendarskih dana varira od 28 do 31. Broj radnih dana u tom mjesecu varira od 20 do 23.
Radni tjedni vs kalendarski tjedni u ugovorima:
Ako ugovor kaže „4 radna tjedna otkaznog roka”, to znači 20 radnih dana — samo ponedjeljak do petak. Vikendi se ne računaju. U tom slučaju otkazni rok koji počinje u utorak trajat će 20 radnih dana i završiti nekoliko kalendarskih tjedana kasnije, ovisno o tome koliko vikenda padne u tom razdoblju.
Uvijek provjerite piše li u ugovoru „tjedni” ili „radni tjedni”. Razlika može biti 8–10 dana kod tipičnog otkaznog roka.
Vremenski planovi projekata: tjedni truda vs kalendarski tjedni
U vođenju projekata „3 tjedna rada” i „3 kalendarska tjedna” nisu ista stvar.
3 tjedna truda pri punom kapacitetu = 15 radnih dana po osobi. Ako je zadatak 3 tjedna truda za jednu osobu koja radi puno radno vrijeme, traje 3 kalendarska tjedna. Ako ga dijele dvije osobe, traje 1,5 kalendarskih tjedana. Ako jedna osoba radi na 50% kapaciteta, traje 6 kalendarskih tjedana.
3 kalendarska tjedna = 15 radnih dana uz pretpostavku da nema praznika, nitko nije na nepuno radno vrijeme i nema troška prebacivanja konteksta.
Ova razlika je važna pri planiranju datuma isporuke. Ako dioniku kažete da će značajka trajati „3 tjedna”, a vi mislite na radne tjedne pri 80% kapaciteta s praznikom u sredini, kalendarski završni datum je prilično drugačiji od onoga što oni zamišljaju.
Kod procjene rokova:
- Za zadatke kraće od mjesec dana navodite radne dane, ne tjedne
- Kao provjeru navodite kalendarski završni datum
- Izričito navedite praznike unutar razdoblja
Izračun radnih tjedana u kodu
Python:
from datetime import date, timedelta
def working_days(start: date, end: date) -> int:
total = 0
current = start
while current <= end:
if current.weekday() < 5: # 0=Mon, 4=Fri
total += 1
current += timedelta(days=1)
return total
def working_weeks(start: date, end: date) -> float:
return working_days(start, end) / 5
# Example
start = date(2026, 4, 7)
end = date(2026, 5, 2)
print(working_days(start, end)) # 20
print(working_weeks(start, end)) # 4.0
Za velike raspona datuma, brži pristup koristi modularnu aritmetiku kako bi se izbjeglo petljanje:
def working_days_fast(start: date, end: date) -> int:
days = (end - start).days + 1
full_weeks, remainder = divmod(days, 7)
working = full_weeks * 5
# Count working days in the partial week
start_dow = start.weekday() # 0=Mon
for i in range(remainder):
if (start_dow + i) % 7 < 5:
working += 1
return working
JavaScript:
function workingDays(start, end) {
let count = 0
const current = new Date(start)
while (current <= end) {
const day = current.getDay()
if (day !== 0 && day !== 6) count++ // 0=Sun, 6=Sat
current.setDate(current.getDate() + 1)
}
return count
}
function workingWeeks(start, end) {
return workingDays(start, end) / 5
}
SQL (PostgreSQL):
-- Working days between two dates (excluding weekends)
SELECT
(EXTRACT(DOW FROM end_date) - EXTRACT(DOW FROM start_date))::int +
((end_date - start_date) / 7) * 5 +
CASE WHEN EXTRACT(DOW FROM start_date) = 0 THEN 1 ELSE 0 END +
CASE WHEN EXTRACT(DOW FROM end_date) = 6 THEN -1 ELSE 0 END
AS working_days
FROM (SELECT DATE '2026-04-07' AS start_date, DATE '2026-05-02' AS end_date) t;
Sadržaj za brzu referencu
| Što želiš | Metoda |
|---|---|
| Trajanje otkaznog roka | Kalendarski dani (vikendi se računaju) |
| Radni kapacitet projekta | Radni dani (pon–pet), podijeli s 5 za tjedne |
| Planiranje emitiranja/maloprodaje | Raspon ISO tjedana |
| Pravo na dopust | Radni dani, oduzmi državne praznike |
| Ugovorni rokovi | Kalendarski dani osim ako ugovor kaže „radni dani” |
Kalkulator dana između datuma prikazuje i kalendarske i radne dane za bilo koji raspon — korisno kao polazište prije nego što ručno oduzmeš državne praznike u svojoj jurisdikciji.