Elapsed time and working time are different numbers
Between Monday morning and Friday evening there are 96 hours of elapsed time and, for most people, 40 hours of work. The gap is not a rounding difference — it is four nights, two weekend days you did not reach, and five unpaid lunches. This tool reports both, because the two get confused in exactly the situations where the difference matters: a service-level promise, a contractor’s invoice, a project estimate.
Working time = Σ over each day ( overlap of the working window with the span ) − unpaid break per day counted
The working window is a pair of local clock times, not a number of hours, and that distinction is the whole point. Nine to five is a pair of readings on a wall clock; how much time passes between them depends on what the clock does in between. The span is clipped at both ends, so a Wednesday that starts at 14:00 contributes three hours, not eight. The break comes off any day with working time in it and never takes a day below zero. Non-working weekdays and public holidays are removed before any of this.
The hour the clocks take away, and the one they give back
Twice a year a working day is not the length the rota says. When the clocks go forward, an overnight shift booked from 22:00 to 06:00 lasts seven hours. When they go back, the same shift lasts nine. Neither is a bug and neither is negotiable — that is how much time actually passed — but a calculator that reports eight on both nights will produce a payroll figure someone can prove wrong.
Offsets here come from the IANA time zone database your browser already carries, read at the instant in question. Nothing is hardcoded, which matters more than it sounds: countries change their rules, and a table of offsets written down once is wrong the first time one does. Half-hour zones such as India and Sri Lanka work, 45-minute zones such as Nepal and the Chatham Islands work, the southern hemisphere’s opposite calendar works, and Lord Howe Island’s unusual thirty-minute shift works.
Two clock readings are genuinely undefined twice a year, and the tool resolves both deliberately rather than by accident. A shift booked to start at 02:30 on a spring-forward morning starts at 03:00, because 02:30 does not happen. A shift booked to start at 01:30 on a fall-back morning starts at the first 01:30, the earlier of the two, which is the reading that makes the night longer rather than shorter.
A week, with a clock change in it
Start with an ordinary week. Monday 5 to Friday 9 January 2026 in New York, 09:00 to 17:00, an hour unpaid each day: 35h 00m across 5 days, against 119h 59m of elapsed time. Nothing surprising, and that is the point of showing it first.
Now the same city on the night of Saturday 7 March 2026, a shift from 22:00 to 06:00. The rota says eight hours. The calculator says 7h 00m, and marks the row: the clocks went forward at 02:00 that morning, so the hour between 02:00 and 03:00 never happened and nobody worked it.
Run the same shift across the night of 31 October and it comes out at nine hours, for the mirror-image reason. A worker on both nights has done sixteen hours, not sixteen; the rota’s sixteen is a fiction that happens to average out across the year and never averages out inside one pay period.
Both figures are produced by the same engine as the calculator above, at the time this page is built.
Shifts that cross midnight belong to the day they started
Set the day end earlier than the day start and the tool reads it as an overnight shift: it runs into the following calendar day and the hours are credited to the day it began. That is how rotas are written, how shifts are named (“Friday night” ends on Saturday), and how most payroll systems attribute them. The day table shows the starting date, so a fortnight of nights reads as fourteen rows rather than fifteen half-rows.
A consequence worth knowing: with an overnight window, the working-days filter applies to the day the shift starts. A Monday-to-Friday setting includes the shift that begins Friday night and ends Saturday morning, and excludes the one that begins Sunday night. If your rota works the other way, set the working days to match how your shifts are named rather than how they end.
What this does not settle
This counts hours. It does not decide which of them are paid. Overtime thresholds, premium rates, night and weekend loadings, and whether a break is paid at all are matters of contract and of local labour law, and they differ between two employers in the same street. Nothing here should be read as a pay figure.
It applies one working window to every day, so a rota with different hours on different days has to be run in parts or entered as separate spans. It does not model split shifts, on-call time, travel time, or a break whose length depends on the shift’s length — a rule that exists in several jurisdictions. It assumes the whole span sits in one time zone: a person who travels mid-span has two calculations, not one. And where a number carries a legal or contractual consequence, confirm it against the agreement and the relevant authority.
Sources
Time zone offsets and daylight-saving transitions: the IANA time zone database, read through the browser’s own internationalisation API rather than copied into this site. Public holidays: the published lists and statutes named on the holiday selector, each with the years it covers.