Date Calculator

Add or subtract days, weeks, months, or years to or from any date. Free date calculator with the formula shown - runs entirely in your browser, no signup.

Months and years use calendar arithmetic: adding 1 month to January 31 lands on February 28 (or 29 in a leap year), matching how calendars actually work.

Updates automatically as you type.

Calculated in your browser; your inputs are not sent to us. Privacy

Results will appear here.
Calculation details
Every figure above is calculated locally in your browser from the assumptions shown. No inputs are sent anywhere. See the methodology section below for how this tool works.
Use this resultShare the current inputs, or ask ChatGPT to explain the calculation in context.
Ask an AI to explain this result
Share this result

Planning estimate only, not financial, tax, or legal advice. Verify assumptions and current rules before making decisions.

This tool runs in your browser. Your calculator inputs and results are never transmitted to us or to ad/affiliate partners. Ads and sponsored links may set third-party cookies to serve and measure them, but they never receive your calculation values. If you explicitly save a scenario, its permitted fields stay in local browser storage until you clear them. See our Privacy Policy.

Use this result

Share the current inputs or ask ChatGPT to explain the calculation in context.

More options
Report a calculation issue
Day counts for date additions showing clamped versus unclamped results
Adding 2 years to March 31 costs 3 days: 727, not 730.
Method & verification

How This Tool Works

Calculation Method

Reads Start date, Operation, Amount and Unit, then returns the result shown on this page.

Site methodology

No unrelated authority link is added merely to make this page look sourced. Tool-specific external sources are shown only when they directly support the method, rate, or rule.

Assumptions to Verify

  • Inputs are treated exactly as entered.
  • Verify important decisions with current authoritative information.

Privacy: The calculation runs in this browser. Shared links contain the page address only, not your inputs or results.

Worked example: adding 1 month and 2 years to March 31, 2025

Take the start date 2025-03-31 with 'add', amount 1, unit months. The script converts the date to a UTC noon anchor, so month arithmetic runs on year and month indexes only. Month index for March is 2; adding 1 gives 3, which maps to April 2025. April has 30 days, so the code takes the last day of the target month and clamps: min(31, 30) = 30. The result is April 30, 2025, a Wednesday, exactly 30 days after the start.

Now switch the unit to years with amount 2 from the same start. The target year is 2025 + 2 = 2027, and the day check runs against February of that year. 2027 is not a leap year, so February ends on the 28th. Because March 31 is past that, the result clamps to March 28, 2027. Counting days: 2025 to 2026 adds 365, 2026 to 2027 adds another 365, then subtract the 3 days lost to the clamp, which gives 727 days. The output shows that difference directly, so you can see the clamp cost rather than trust a nominal '2 years'.

The same start date with 'add 1 week' needs no clamping: 7 x 86400000 ms lands on April 7, 2025, a Monday, 7 days later.

Where the calendar math can surprise you

Month-end clamping is the biggest one. Add 3 months to November 30, 2025 and the target month is February 2026; since 2026 is not a leap year, February ends on the 28th, and the answer is February 28, 2026, not March 2. Add 1 month to January 31, 2025 and you get February 28, 2025. In both cases the day of month drops permanently instead of rolling over into the next month, which is the standard convention but differs from tools that roll forward.

Leap days are handled by the clamp, not skipped. Add 1 year to February 29, 2024: the target year 2025 has February ending on the 28th, so the result is February 28, 2025, 365 days later. Repeat the operation from that result and you land on February 28, 2026, also 365 days; the anniversary never returns to the 29th.

Time zone effects are neutralized by anchoring everything at 12:00 UTC, so a result cannot shift by a day the way local-midnight arithmetic can across DST changes. The trade-off is that the day count reflects pure calendar distance: adding 1 day across a spring-forward night still counts as 1 day, matching wall-calendar expectations.