TL;DR: Most “wrong by one” reports trace to inclusive/exclusive mode, swapped start/end, stale today, or locale date parsing—not broken arithmetic. Fix inputs and mode before blaming the engine.
Triaging in five minutes
Step 1: hand-count three-day sample (Mon–Wed). Step 2: confirm start before end. Step 3: refresh today. Step 4: retype ISO dates. Step 5: compare with second method (add-days round trip).
Inclusive off-by-one
Expected 7, got 6 or 8—toggle inclusive/exclusive once, document which matched contract PDF.
Swapped endpoints
Negative or surprising small numbers—reverse fields. Some UIs always show absolute value hiding swap—read labels.
Stale today tab
Countdown off by one after midnight until refresh—user environment, not formula.
Locale parsing
03/04/2026 read as March 4 vs April 3—one day error rare but catastrophic; use ISO entry when disputing.
Spreadsheet import
Excel serial date off by one vs tool due to 1900 leap bug legacy—normalize date cells to ISO strings before compare.
Business vs calendar
Expected 5 business days, tool shows 7 calendar—mode not bug.
Round-trip proof
Start S, add N → E; between S and E should equal N under same mode. Failure locates which operation disagrees.
Reporting to support
Include ISO inputs, expected, actual, mode screenshot, browser—speeds reproduction.
Team postmortem template
“Root cause: exclusive assumed, policy inclusive.” Store beside SLA wiki entry.
Prevent recurrence
Pin inclusive definition in template emails; use datecalculators.org with visible settings in screenshots attached to contracts.
When engine might be wrong
After all input checks, test known leap-year span against published tables—genuine bugs rare; input errors dominate.
Worked example: three-day Mon–Wed test failed
Tool shows 2, expected 3 inclusive—toggle inclusive, now 3—update team wiki default. If still wrong after toggle, check whether tool counts nights vs days—read help once.
Spreadsheet shows 3, tool shows 2—DATEDIF exclusive vs policy inclusive—document delta, fix spreadsheet column header note.
Regression after locale change
Browser locale travel changed picker order; entered Mar 4 became Apr 3—off-by-one month looks like off-by-one day in span—always verify month name after locale shift.
Support ticket quality
Good ticket: inputs ISO, expected 10 inclusive, got 9, screenshot mode visible. Bad ticket: “wrong”—cannot help.
Double-counting endpoint days in chains
Chain inclusive segments that share endpoint may double-count shared day—segment A inclusive Mon–Wed plus segment B inclusive Wed–Fri counts Wed twice if summed—use exclusive interior or non-overlapping segments.
Gantt bars visually overlap on shared milestone day—between-dates each segment separately, do not sum inclusive spans that share boundary without adjustment.
Unit tests for calendar features
Engineering teams: maintain automated triplet Mon–Wed expected inclusive 3 exclusive 2 in CI—catches regressions before users email support.
API date parameters
Integrations passing start/end to REST APIs—off-by-one often from API exclusive end vs UI inclusive display—document API contract, align UI toggle, add integration test triplet.
Batch jobs processing “yesterday’s data” use server UTC date—misaligned cron timezone yields wrong yesterday; date calculator validates intended processing date string.
Printed calendar reconciliation
Wall calendar printed months ahead; digital tool authoritative near month boundary—reconcile printed vs digital when planning cross-month spans in December for January.
Teaching interns to verify dates
Onboarding exercise: given Mon start and Thu end, hand-count inclusive and exclusive, then compare tool— interns who pass stop sending wrong integers within two weeks.
Code review checklist item: “date span has unit test or screenshot for inclusive mode”— catches API/UI mismatches before production.
When customer insists tool wrong, ask for photo of wall calendar with endpoints circled—social proof ends debate faster than repeated emails.
Checkout cart timers
E-commerce “complete purchase within 15 minutes” is minute math; “offer valid through Sunday” is calendar—do not confuse flash timer with date-only sale end when planning buy time.
QA regression suite for date UI
Maintain three fixed cases in automated UI tests: Mon–Wed inclusive 3, exclusive interior per spec, and leap Feb 29 add-one-year landing. Fail build on drift. Cheaper than support tickets after deploy.
Product managers reviewing date feature specs should require inclusive/exclusive label in every mockup screen—design omission becomes engineering guess becomes user dispute.
Mobile app date picker locale follows device setting—QA matrix should include at least US and EU locale devices for same between-dates test case expecting identical integer.
Agile story pointing “two-week sprint” verification: between sprint start and end inclusive should match 14 calendar days unless sprint starts mid-week by team charter spanning partial weeks.
Firmware release notes “support ends 180 days after version ship”—add 180 from ship ISO on release blog, between today and end for upgrade campaign urgency segmentation in email CRM.
Conference CFP “abstracts due 11:59 PM AoE” (Anywhere on Earth) is UTC-12 latest—datetime layer; date-only reminder should say “day before in your zone” conservatively.
Legal discovery document production deadlines “21 days after request”—subtract 21 from service date on cover letter, between today and production date for privilege log pacing meetings.
SaaS billing dispute “charged one day early” often timezone UTC vs local date boundary—compare charge timestamp converted to local civil date with between-dates renewal expectation before filing card dispute.



