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 rokaKalendarski dani (vikendi se računaju)
Radni kapacitet projektaRadni dani (pon–pet), podijeli s 5 za tjedne
Planiranje emitiranja/maloprodajeRaspon ISO tjedana
Pravo na dopustRadni dani, oduzmi državne praznike
Ugovorni rokoviKalendarski 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.