Ako vypočítať pracovné týždne medzi dvoma dátumami (a prečo je to zložitejšie, než vyzerá)
Máte dva dátumy a potrebujete vedieť, koľko pracovných týždňov je medzi nimi. Znie to ako problém na päť sekúnd. Spočítať dni, vydeliť 7, prípadne odrátať víkendy — hotovo.
Lenže nie, pretože „pracovný týždeň“ nie je úplne presný pojem. Podľa toho, čo počítate — výpovednú lehotu, projektový čas, nárok na voľno alebo trvanie zmluvy — je správna metóda iná. A pri zlej metóde môžete byť mimo o dni, čo môže mať právny alebo finančný dopad.
Čo presne znamená „pracovný týždeň“?
Najčastejšie sa pracovným týždňom myslí päť dní: pondelok až piatok. No existujú aj výnimky, ktoré sa oplatí poznať:
- Niektoré odvetvia a krajiny používajú 6‑dňový pracovný týždeň (pondelok–sobota)
- Niektoré pozície majú skrátený 4‑dňový pracovný týždeň
- Na Blízkom východe sa tradične pracovalo nedeľa–štvrtok, hoci mnohé krajiny prešli na pondelok–piatok
- Pri čiastočných úväzkoch môže byť „pracovný týždeň“ 2, 3 alebo 4 dni
V tomto článku „pracovný týždeň“ znamená štandardný pondelok–piatok, pokiaľ nie je uvedené inak. Postupy sa dajú zovšeobecniť, keď poznáte svoje pracovné dni.
Metóda 1: celé pracovné týždne
Najjednoduchšia interpretácia: koľko celých blokov pondelok–piatok sa zmestí medzi dva dátumy?
Toto je často to, čo ľudia myslia otázkou „koľko týždňov výpovede to je?“ Štvortýždňová výpovedná lehota znamená 4 celé bloky pondelok–piatok — 20 pracovných dní — bez ohľadu na to, v ktorý deň v týždni začne.
Výpočet:
1. Spočítajte celkové kalendárne dni medzi dátumami 2. Odpočítajte víkendy: v každom celom 7‑dňovom bloku sú 2 víkendové dni 3. Zohľadnite neúplný týždeň na začiatku a na konci
V praxi je jednoduchšie počítať priamo pracovné dni a vydeliť ich piatimi:
pracovne_tyzdne = pracovne_dni / 5
kde pracovne_dni je počet dní pondelok–piatok medzi dvoma dátumami.
Príklad: 7. apríl (pondelok) až 2. máj (piatok)
Keďže začína v pondelok a končí v piatok, vyjde to čisto:
- Týždeň 1: 7.–11. apr (5 dní)
- Týždeň 2: 14.–18. apr (5 dní)
- Týždeň 3: 21.–25. apr (5 dní)
- Týždeň 4: 28. apr–2. máj (5 dní)
Spolu: 20 pracovných dní = presne 4 pracovné týždne.
Ak začínate alebo končíte uprostred týždňa, výsledok bude „zlomkový“ — a to nás privádza k ďalšej metóde.
Metóda 2: pracovné dni vydelené 5
Pre väčšinu praktických situácií — plánovanie projektov, odhady času, kapacitné výpočty — nepotrebujete celé týždne. Potrebujete pracovné dni a výsledok vyjadriť ako týždne + dni.
Vzorec:
celkove_pracovne_dni = (cele_tyzdne × 5) + pracovne_dni_v_neuplnom_tyzdni
tyzdne = floor(celkove_pracovne_dni / 5)
zvysne_dni = celkove_pracovne_dni mod 5
Príklad: 18. marec (streda) až 11. apríl (piatok)
Spočítajte pracovné dni:
- 18. mar (st) až 21. mar (pi): 4 dni
- 24.–28. mar: 5 dní
- 31. mar–4. apr: 5 dní
- 7.–11. apr: 5 dní
Spolu: 19 pracovných dní = 3 týždne a 4 dni.
Táto metóda je správna pre projektové harmonogramy, kde pracujete s kapacitou v dňoch, nie v kalendárnych týždňoch.
Metóda 3: rozsah ISO týždňov
Niekedy „koľko týždňov medzi“ znamená: aký je rozdiel v ISO číslach týždňov?
Príklad: Udalosť trvá od ISO týždňa 10 po ISO týždeň 23. To je 13 ISO týždňov trvania.
Výpočet:
rozsah_tyzdnov = (koniec_iso_rok × 52.18) + koniec_iso_tyzdna − (zaciatok_iso_rok × 52.18) + zaciatok_iso_tyzdna
V praxi, ak sú dátumy v tom istom roku:
rozsah_tyzdnov = koniec_iso_tyzdna − zaciatok_iso_tyzdna
Ak prechádzate cez hranicu rokov, treba zohľadniť, či mal počiatočný rok 52 alebo 53 týždňov:
rozsah_tyzdnov = (52_alebo_53_pre_zaciatocny_rok − zaciatok_iso_tyzdna) + koniec_iso_tyzdna
Táto metóda je relevantná pri vysielacích plánoch, retail plánovaní a systémoch, ktoré organizujú prácu podľa ISO týždňov, nie podľa pracovných dní.
Problém inkluzivity dátumov
Jedna z najčastejších chýb: či počítať začiatok, koniec, oba dátumy alebo ani jeden.
„Štvortýždňová výpoveď začínajúca dnes“ môže znamenať:
- 4 týždne od dnes, kde dnešok je deň 1 (inkluzívny začiatok): končí sa v rovnaký deň v týždni o 4 týždne
- 4 týždne po dnešku (exkluzívny začiatok): končí o deň neskôr
Zvyčajne ide o rozdiel jedného dňa. Často to nevadí, no pri sporoch alebo ukončení zmluvy môže.
Bezpečná prax: vždy uveďte „X pracovných týždňov od [dátum], inkluzívne/exkluzívne“. Nenechávajte to nejasné.
Štátne sviatky: výpočet, na ktorý sa zabúda
Výpočty pracovných týždňov bez zohľadnenia štátnych sviatkov sú z princípu nepresné — nadhodnocujú dostupný pracovný čas.
Problém je, že sviatky nie sú jednotné. Líšia sa podľa:
- krajiny (Vianoce sú 25. decembra v UK; v Japonsku nejde o štátny sviatok)
- regiónu v rámci krajiny
- roka (pohyblivé sviatky ako Veľká noc menia dátum)
- pracovnej zmluvy (niektoré pozície majú ďalšie dni voľna)
Pre hrubý odhad — „to je asi 6 pracovných týždňov“ — ignorovanie sviatkov stačí. Pre presný výpočet — termíny v zmluvách, právne lehoty — treba sviatky odpočítať.
Žiadna kalkulačka to nevie automaticky bez toho, aby poznala vašu krajinu/region a konkrétny rok. Kalkulačka dní medzi dátumami ukáže počet pracovných dní bez víkendov; lokálne sviatky odpočítate manuálne.
Praktická aproximácia pre UK: približne 8 bank holidays ročne, teda asi 1.6 mesačne. Pre 3 mesiace je to okolo 5 sviatkov na odpočítanie. Pre federálne sviatky v USA: 11 ročne, teda asi 0.9 mesačne.
Výpovedné lehoty: ako to v praxi vychádza
Pracovné zmluvy uvádzajú výpovedné lehoty v týždňoch alebo mesiacoch. Práve prevod na pracovné dni je miesto, kde vzniká najviac chýb.
„4 týždne výpovednej lehoty“ znamená 4 kalendárne týždne (28 dní), nie 4 × 5 = 20 pracovných dní. Ak dáte výpoveď v utorok, lehota beží 28 kalendárnych dní — vrátane víkendov. Posledným dňom lehoty je utorok o 4 týždne neskôr.
Mnohých to prekvapí, lebo intuitívne čakajú 20 pracovných dní. Nie — „4 týždne“ sú 28 kalendárnych dní a víkendy sa do lehoty počítajú, aj keď sa nepracuje.
„1 mesiac výpovede“ je ešte menej presné. Mesiac od 15. januára je 15. február. Mesiac od 31. januára je 28. február (alebo 29. v priestupnom roku). Počet kalendárnych dní sa mení od 28 do 31. Počet pracovných dní v tom období sa mení približne od 20 do 23.
Pracovné týždne vs. kalendárne týždne v zmluvách:
Ak zmluva hovorí „4 pracovné týždne výpovede“, znamená to 20 pracovných dní — len pondelok až piatok. Víkendy sa nepočítajú. Vtedy výpoveď podaná v utorok pobeží 20 pracovných dní a skončí o niekoľko kalendárnych týždňov neskôr podľa toho, koľko víkendov do toho spadne.
Vždy skontrolujte, či zmluva píše „týždne“ alebo „pracovné týždne“. Rozdiel môže byť pri typickej lehote 8–10 dní.
Projektové harmonogramy: týždne práce vs. kalendárne týždne
V projektovom manažmente „3 týždne práce“ a „3 kalendárne týždne“ nie je to isté.
3 týždne práce pri plnej kapacite = 15 človeko‑pracovných dní. Ak je úloha 3 týždne práce pre jedného človeka na plný úväzok, trvá 3 kalendárne týždne. Ak sa o ňu delia dvaja ľudia, trvá 1.5 kalendárneho týždňa. Ak je človek dostupný len na 50%, trvá 6 kalendárnych týždňov.
3 kalendárne týždne = 15 pracovných dní, za predpokladu že nie sú sviatky, nikto nie je na čiastočný úväzok a neexistuje režijný čas na prepínanie kontextu.
Pri odhadoch:
- Pri úlohách kratších ako mesiac uvádzajte radšej pracovné dni, nie týždne
- Ako sanity check uveďte aj dátum konca v kalendári
- Výslovne uveďte sviatky v danom období
Výpočet pracovných týždňov v kóde
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
Pri veľkých rozsahoch dátumov je rýchlejšie použiť modulárnu aritmetiku, aby ste neiterovali po dňoch:
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;
Rýchly prehľad
| Čo chcete zistiť | Metóda |
|---|---|
| Trvanie výpovednej lehoty | Kalendárne dni (víkendy sa rátajú) |
| Pracovná kapacita v projekte | Pracovné dni (Po–Pi), vydeliť 5 pre týždne |
| Vysielanie / retail plánovanie | Rozsah ISO týždňov |
| Nárok na dovolenku | Pracovné dni, odpočítať sviatky |
| Zmluvné termíny | Kalendárne dni, ak zmluva neuvádza „pracovné dni“ |
Kalkulačka dní medzi dátumami ukáže kalendárne aj pracovné dni pre akýkoľvek rozsah — vhodné ako východisko pred tým, než odpočítate štátne sviatky vo vašej jurisdikcii.


