Three months sounds simple until you actually need to count the days.
Try it. In real terms, that's 92 days. But how many days passed? June 15. But if you started in January? Here's the thing — pick any date — say, March 15 — and add three months. Easy. April has 30. That depends entirely on which months you crossed. March has 31. May has 31. January (31), February (28 or 29), March (31) — you're looking at 89, 90, or 91 days depending on the year And it works..
The answer isn't a single number. It's a range. And pretending otherwise causes real problems — missed deadlines, billing errors, contract disputes, even medical miscalculations.
What "Three Months" Actually Means
Most people treat "three months" as a fixed block of time. So it's not. It's a calendar concept that shifts based on where you land.
Calendar months vs. rolling 90 days
Here's where confusion starts. A calendar quarter — Q1, Q2, Q3, Q4 — is always three calendar months. Even so, january through March. In real terms, april through June. July through September. Even so, october through December. But the day count varies: Q1 is 90 days in a common year, 91 in a leap year. That said, q2 is always 91. Q3 is 92. Q4 is 92.
Now compare that to "90 days from today.But it doesn't care about month boundaries. " That's a rolling window. So it just counts forward 90 sleeps. The two concepts overlap sometimes but they're fundamentally different Practical, not theoretical..
The February problem
February is the chaos agent. On the flip side, in a common year it contributes 28 days to any three-month span that includes it. In a leap year, 29. That single day shifts everything downstream.
If your three-month window is December through February, you get 31 + 31 + 28 = 90 days (common year) or 91 (leap year). Now, november through January? 30 + 31 + 31 = 92. But January through March? 31 + 28/29 + 31 = 90 or 91. The same "three months" label produces four different totals.
Leap year mechanics
Leap years follow a rule most people half-remember: divisible by 4, except centuries not divisible by 400. So 2000 was a leap year. 1900 wasn't. That said, 2100 won't be. 2024 was. 2028 will be.
That extra day in February only matters if your three-month window includes February. If you're counting April through June, leap year is irrelevant. But for January-March, February-April, or December-February, it changes the total by one day Easy to understand, harder to ignore..
Why the Day Count Matters
You might think a day here or there is trivial. In practice, it's not.
Billing and subscriptions
SaaS companies, gyms, insurance providers — many bill "quarterly" or "every three months.Day to day, that's an extra $6 annually per customer. " If they define that as 90 days but the calendar says 92, customers get billed slightly more often than expected. So naturally, a customer paying $100 per "quarter" on a 90-day cycle pays 4. Over years, that compounds. 06 times per year instead of 4. At scale, it's real money.
Some companies bill calendar quarters (Jan 1, Apr 1, Jul 1, Oct 1). That said, others bill rolling 90 days from signup. The difference shows up in proration calculations, refunds, and "why was I charged twice this month?" support tickets.
Legal and contractual deadlines
Contracts love "within three months" or "ninety (90) days.A clause saying "notice must be given within three months of the effective date" creates ambiguity if the effective date is January 31. " Those aren't synonyms. Here's the thing — ninety days later is May 1. Three calendar months later is April 30. Which controls?
Courts generally interpret "three months" as calendar months unless specified otherwise. But "90 days" means 90 days. Because of that, the discrepancy has decided actual cases. If you're drafting or signing something, pick one definition and stick with it.
Pregnancy and medical timing
Obstetrics uses weeks, not months, precisely because months are inconsistent. Due date calculations assume 280 days from last menstrual period (40 weeks), not "nine months.Here's the thing — "Three months pregnant" means roughly 13 weeks — but the day count varies depending on which months those weeks fall in. But patients think in months. " The month-based mental model is off by days to weeks.
Project planning and sprints
Agile teams sometimes plan in "three-month quarters.Worth adding: if you capacity-plan assuming 90 working days but the quarter has 92 calendar days (minus weekends, holidays, PTO), your velocity math drifts. Now, a 12-week quarter is 84. " But a 13-week quarter is 91 days. Small errors compound across teams.
How to Calculate It Correctly
Don't guess. Use the right method for your situation.
Method 1: Calendar month addition
If you need "same date, three months later," add three to the month number. Now, january (1) + 3 = April (4). August (8) + 3 = November (11). November (11) + 3 = February (2) of next year.
But watch day overflow. relativedelta does the same. Excel's EDATE function returns April 30. Some roll to May 1. Python's dateutil.January 31 + 3 months = April 31. But not every tool agrees. April doesn't have 31 days. Most systems roll to April 30. Test yours Simple, but easy to overlook..
Method 2: Day counting
If you need exact elapsed days, count them. That's why don't multiply 30 × 3. That's 90 — wrong for most three-month spans The details matter here..
Instead: identify the specific start and end dates, then subtract. January 15 to April 15? Count Jan 15-31 (17 days), all of February (28 or 29), all of March (31), April 1-15 (15). Total: 17 + 28/29 + 31 + 15 = 91 or 92.
You'll probably want to bookmark this section.
Or use a date calculator. Or spreadsheet: =END_DATE - START_DATE. Done.
Method 3: Rolling 90/91/92 days
If "three months" means "approximately 90 days" for your purpose, decide which approximation:
- 90 days: standard business approximation
- 91 days: average calendar quarter (365.25 ÷ 4)
- 92 days: most common actual quarter (Q3 and Q4)
Then add that many days to your start date. START_DATE + 90 in Excel. date + timedelta(days=90) in Python. This ignores month boundaries entirely.
Tools that handle this well
- Excel/Google Sheets:
EDATE(start_date, 3)for calendar months,start_date + 90for rolling days.DATEDIFor simple subtraction for elapsed days. - Python: `dateutil
relativedelta(months=3)` is the gold standard for calendar-based shifts, as it handles month-end overflows gracefully Simple, but easy to overlook..
- SQL:
DATEADD(month, 3, start_date)in T-SQL orstart_date + INTERVAL '3 months'in PostgreSQL. - JavaScript: Libraries like
date-fnsorLuxonare essential, as the nativeDateobject can be notoriously tricky with month increments.
Short version: it depends. Long version — keep reading.
Summary Table: When to Use Which Method
| Use Case | Preferred Method | Why? Because of that, |
|---|---|---|
| Legal Contracts | Calendar Month Addition | Provides a fixed, predictable date for renewals or expirations. |
| Scientific Research | Day Counting | Eliminates ambiguity caused by varying month lengths. |
| Financial Projections | Rolling Day Counting | Accounts for the actual number of days in a quarter for precise interest or revenue math. |
| Casual Conversation | Approximation (90 days) | Fast, intuitive, and "close enough" for non-critical communication. |
Not the most exciting part, but easily the most useful.
Conclusion
The "three-month" problem is a classic example of how human intuition often clashes with mathematical precision. In everyday conversation, a month is a vague unit of time; in a spreadsheet, a month is a variable length of 28, 29, 30, or 31 days.
The key to avoiding errors is not to find a "perfect" definition of a month—because one doesn't exist—but to choose a definition and apply it consistently. Whether you are a project manager setting milestones, a developer writing date-logic, or a legal professional drafting a term sheet, always clarify whether you mean "the same date in three months" or "exactly 90 days from today." Precision in definition is the only way to ensure precision in results The details matter here..