Date Calculator
Add or subtract days, weeks, months and years; analyse ranges with weekday and business-day counts
Date Calculator
Result
Date Range Calculator
Calculation History
Date Information
Business Days
Business days exclude Saturday and Sunday. Useful for project timelines, contract deadlines, and SLA windows that don't run on weekends. The calculator steps day-by-day and counts only Mon–Fri.
Weekdays Only
Weekdays in this tool are Monday through Friday — the same Mon–Fri set as Business Days for jurisdictions without statutory holiday data. If you need holiday-aware calendars, store holidays separately and skip them in your own loop.
Date Range Analysis
Pick a start and end date to see the span as days, whole weeks, calendar months, calendar years, weekday count, and weekend-day count — all counted inclusively from start to end.
Add / Subtract Units
Add or subtract days, weeks, months, years, hours, or minutes. Calendar arithmetic uses the browser's Date object, so leap years and short months are handled automatically.
Date Calculator
Add or subtract days, weeks, months and years; analyse ranges with weekday and business-day counts
Features
- Add or subtract a number of days, weeks, months, years, hours, or minutes from any base date — calendar-aware (leap years and short months handled by the Date object)
- Business-day mode skips Saturday and Sunday in both directions; positive values move forward, negative values move backward
- Weekdays-only mode counts Monday through Friday only — same Mon–Fri set, useful when holiday data isn't available
- Date Range panel analyses any start-to-end span: total days, whole weeks, calendar months and years (with day-of-month carry handled), plus weekday and weekend-day counts (both ends inclusive)
- Rolling calculation history with the last 10 operations including base date, result date, and the day-of-week of the result — copy any historic result with one click
- Day-of-week label rendered via Intl.DateTimeFormat so it follows the active page language ("Monday" on /en, "Pazartesi" on /tr, "Montag" on /de)
- Dates parsed as local-noon to avoid the off-by-one bug that bites Date.parse on YYYY-MM-DD strings in negative-UTC-offset timezones
- Result dates formatted in the active locale via toLocaleDateString — no hardcoded en-US output, so month names and number formats follow the page language
How to use
- Pick a base date — either type one in or click Today to snap to the current date.
- Choose an operation: Add, Subtract, Business Days, or Weekdays Only.
- Enter how many of the chosen unit (days, weeks, months, years, hours, minutes) to apply; the result updates immediately.
- Read the result panel: calculated date, day-of-week, and the difference summary; copy the date with one click.
- For range analysis, set a start and end date in the right-hand panel to see total days, weeks, months, years, weekday count, and weekend-day count.
- Recent calculations stay in the history list; use the copy button on any history row to retrieve an older result.
Tips & Best Practices
- Use Business Days / Weekdays Only for project deadlines and contractual SLAs that pause over weekends.
- Date Range works in either direction — if start is after end, the calculator swaps them internally.
- Hold the value field's spinner to step through a range quickly while watching the result update.
- Copy from history to recover a result you already calculated without retyping the inputs.
- Pair this tool with Timezone Converter when you need both a calendar offset and a zone change.
FAQ
What's the difference between Business Days and Weekdays Only?
In this tool they're identical — both skip Saturday and Sunday and step Monday through Friday. Business-day calendars in the real world also skip statutory holidays, but holiday data is jurisdiction-specific (US federal, UK bank holidays, Turkish national days, etc.). The tool keeps things general by skipping only weekends; bring your own holiday list if you need a fully-localised business-day calendar.
How are calendar months and years counted in the range panel?
Months are computed as (years × 12) + months between the start and end, then decremented by one if the end's day-of-month is earlier than the start's — so 15 Feb → 14 Mar counts as 0 months, while 15 Feb → 15 Mar counts as 1. Years are decremented if the end's month is earlier than the start's, or the same month but an earlier day. This matches how people think about anniversaries.
Why are total days sometimes off by one when I cross a DST boundary?
The tool parses YYYY-MM-DD strings at local noon, which puts each date 12 hours away from any midnight/DST edge — that avoids the classic Date.parse pitfall where '2026-03-08' becomes 2026-03-07 23:00 in negative-UTC timezones. Total days uses Math.round on the millisecond delta, so a 23-hour spring-forward day still rounds to 1 day.
Does adding 1 month always land on the same day-of-month?
Almost — JavaScript's Date.setMonth carries overflow forward. Adding 1 month to 31 Jan yields 3 Mar in non-leap years (Feb has 28 days, so day 31 of Feb becomes day 3 of March). That matches most banking and scheduling conventions; if you need a different rule (clamp to end-of-month, or 'last business day of month'), do the arithmetic in your own code with explicit clamping.
Can I subtract business days to find an earlier deadline?
Yes. Choose the Subtract operation with the desired unit, or use Business Days / Weekdays Only with a negative value — the engine steps backward day-by-day and counts only Mon–Fri.
Are calculations done locally?
Yes. All date arithmetic uses the browser's built-in Date object; nothing is sent to a server, no history is uploaded, and the tool works offline once the page is cached.
Why is the displayed date format different on different language pages?
Result dates and history entries are rendered with toLocaleDateString using the active page language, so /en shows MM/DD/YYYY or DD/MM/YYYY (per the browser's en variant), /de shows DD.MM.YYYY, /fr shows DD/MM/YYYY, etc. The internal calculation works in ISO YYYY-MM-DD; only the display layer follows your locale.
Does the tool understand leap years?
Yes. Date arithmetic delegates to the native Date object, which knows that 2024 had 29 Feb and 2025 does not. Adding 1 year to 29 Feb 2024 lands on 1 Mar 2025; this matches the JavaScript spec and most calendar applications. If you need a 'clamp-to-28' rule for non-leap years, post-process in your own code.