Dates are day-numbers in costume
— that lesson unlocked the calendar. Times complete the story
with one small extension that explains every timesheet mystery
you’ll ever meet: a time is a fraction of a day. Noon is
0.5. Six in the morning is 0.25. 17:30 is 0.729…, and a
date-with-time like 16/07/2026 09:00 is just 46,219.375 —
whole days plus the fraction.
Believe that, and time arithmetic is ordinary subtraction:
=C2-B2 finish − start → 0.354… → formatted: 8:30
Everything that goes wrong with timesheets goes wrong in one of three places — and each has a one-line fix.
Trap one: the sum that wraps at 24
Sum a week of 8:30 shifts and Excel reports… 18:30. The
values are right (the true total is 42.5 hours ≈ 1.77 days);
the default time costume shows only the time-of-day part,
wrapping past midnight like a clock face. The fix is a
costume, not a formula
— the square-bracket format:
[h]:mm → 42:30
[h] means “total hours, don’t wrap”. The single most useful
fact in timesheet Excel, and it’s one custom format
from the pattern language.
Trap two: hours × rate
Pay time is where the fraction bites: 42:30 at £15/hour is
=total * 15 → about £26.56, because the cell holds 1.77
days. Convert days to hours first:
=total_time * 24 * rate → 42.5 × 15 = £637.50
Multiply by 24 whenever a time must become a decimal number of hours — for pay, for charts, for weighted averages of shift lengths. The reverse (÷24) turns decimal hours back into time values.
Trap three: the shift past midnight
22:00 to 06:00 subtracts to −0.667 — a negative time,
displayed as #####, because plain times carry no date and
Excel thinks you finished before you started. Two honest fixes:
the classic wrap-around formula,
=MOD(finish - start, 1)
(MOD rolls the negative around a full day
— 8:00, correctly); or, better for anything serious, store
full date-times (16/07 22:00, 17/07 06:00) and plain
subtraction just works — the same
store-the-whole-truth instinct
that runs the entire course. Night-shift-heavy rotas want the
second; the odd late Friday survives on the first.
The assembly
Put the three fixes together and the working timesheet is
almost disappointingly small: start and finish columns as real
times (entered 9:00, not 9.00 — the colon is the contract;
a . makes text),
an unpaid-break column to subtract, a daily
=MOD(finish-start,1)-break, a [h]:mm weekly total, and a
×24×rate pay line, ROUNDed
at the money moment. Add
NETWORKDAYS when the
question becomes “working days between dates” rather than hours
— dates and times are one system, and now you hold both halves.
A time is a fraction of a day. One fact, three traps, three one-line fixes — and the timesheet, humanity’s oldest spreadsheet, finally behaves.