Calculating hours worked from clock times, by hand
Turning a clock-in and clock-out time into hours worked looks like simple subtraction, and for a normal daytime shift, it is. Two things complicate it in practice: an unpaid break has to come off the total, and a shift that runs past midnight makes the "end minus start" subtraction go negative unless you account for the day rolling over.
The method
- Convert both clock times to minutes since midnight (
hours × 60 + minutes). - Subtract start from end to get the span. If the result is negative, the shift crossed midnight — add 1,440 minutes (24 hours) to correct it.
- Subtract the unpaid break, in minutes, from that span.
- Convert the worked minutes back to hours and minutes (divide by 60 for hours, take the remainder for minutes), or to a decimal (divide by 60) for payroll.
In one line: worked minutes = (end − start, +1440 if negative) − break minutes.
A worked example: a daytime shift
Clock in 09:00, clock out 17:30, with a 30-minute break.
In minutes: start 9 × 60 = 540, end 17 × 60 + 30 = 1,050. Span: 1,050 − 540 = 510 minutes. Minus the break: 510 − 30 = 480 minutes worked, which is 480 ÷ 60 = 8 hours exactly — 8h 0m, or 8.00 as a decimal.
A worked example: an overnight shift
Clock in 22:00, clock out 06:00 the next morning, with a 45-minute break.
In minutes: start 22 × 60 = 1,320, end 6 × 60 = 360. Span: 360 − 1,320 = −960 — negative, so add 1,440: −960 + 1,440 = 480 minutes. Minus the break: 480 − 45 = 435 minutes, which is 435 ÷ 60 = 7.25 hours — 7h 15m.
The mistake worth watching for
Treating a negative span as "the shift must be wrong" instead of "the shift crossed midnight" is the most common slip, and it goes the other way too: a break longer than the shift itself is an input mistake, not a night shift, and should stop the calculation rather than silently wrapping into a nonsense number of hours.
The free Time Duration tool runs this same subtraction — including the overnight wrap and the break-longer-than-shift check — for any start time, end time and break length.