Date arithmetic: adding days, counting days, and the SA edge cases

Notice periods, lease end dates, payment terms, and immigration windows all need clean date maths. Here's how it works, where the off-by-one errors creep in, and the SA-specific gotchas.

Updated By the ZACalc team

Adding or subtracting days

Conceptually trivial: take a base date, add N days, get a new date. The arithmetic handles month boundaries automatically. 25 February + 10 days = 7 March (in a non-leap year).

Common SA use cases: 30-day payment terms, 90-day notice on a fixed-term lease, 21-day cooling-off period under the CPA, the 14-day insurance free-look period.

Days between two dates — and the off-by-one trap

Calendar days = end date − start date. So 1 March to 31 March is 30 days, not 31. The first day is "day 0".

When a contract says "within 30 days", read carefully — it usually means add 30 to the start date and the deadline is that resulting day. If your contract counts inclusively from day 1, add 1 to our result.

Calendar days vs business days

South African public holidays move (e.g. when a holiday falls on a Sunday, the Monday is observed). Bank business days exclude Saturdays, Sundays, and the 12 official public holidays. For SARS deadlines, the published calendar uses business days.

Our headline figure is calendar days. The weekday estimate (×5/7) is a rough planner — for legal deadlines, always confirm against the official SA holiday calendar.

Worked example: a 90-day notice

You hand in 90 days' notice on 1 March 2026. Adding 90 calendar days lands on 30 May 2026. Your last working day is therefore Friday 29 May (since 30 May is a Saturday).