Add to a date

What date is it 90 days, 3 months or 10 business days from a given day?

Start

The time is optional: leave it empty to work with dates only.

Duration

How it counts

Months and years
Adding a month keeps the day of the month. When that day does not exist, the last day of the month is used: 31 January + 1 month = 28 February (29 in a leap year), and 29 February 2024 + 1 year = 28 February 2025. This is the rule of calendars and spreadsheets (EDATE). GNU date -d "+1 month" overflows instead, to 3 March.
Order
Years and months first, then weeks and days, then hours, minutes and seconds. The order matters: 30 January 2025 + 1 month + 1 day is 1 March, not 28 February.
Business days
Only Monday to Friday count, as in spreadsheets (WORKDAY): 1 business day after a Friday is the Monday. Public holidays are skipped too if you choose a list: 1 business day after Friday 10 July 2026 is Monday 13, but after Monday 13 it is Wednesday 15, 14 July being a holiday.
Hours
Times are read on the clock, without a time zone: a day always lasts 24 hours. Across a change to or from daylight saving time, the real elapsed time differs by one hour.

Transparency

Everything is computed in your browser, by the scripts listed below. Nothing you type leaves this page.

Enforced by your browser
This page's Content Security Policy allows a single destination, the site's audience measurement (connect-src https://stats.r-no.fr, see below), and forbids any form submission (form-action 'none'), so even a bug could not send what you type anywhere. You can read the policy at the top of the page source.
Audience measurement
Like every page of the site, this one counts its visit with Umami, installed on R-no’s own server (stats.r-no.fr). It receives the address of the page, without parameters or anchor, the site you came from (its domain only), your browser, system, language and screen size, and the country, region and city deduced from your IP address, which is not kept. It never receives what you type, nor the result of the tool. No cookie, nothing stored in your browser; if your browser asks not to be tracked (Do Not Track), nothing is measured. The data is erased after 25 months.
  • /commun/mesure.js: the filter applied before each sending, written for R-no Toolbox. 1.4 kB
    SHA-256 225eec74fd12623d82fc05ee7d222be629ce454d081c129e8d1e249ed37ee716
  • https://stats.r-no.fr/m.js: Umami’s tracker, open source (MIT), served by the measurement server. Its fingerprint is not shown here: it changes with each version of Umami, and you cannot check from your browser that it is the published code. For that part, you have to trust R-no.
What is stored
No cookie, and nothing in the address. What you type is never stored: it disappears when you reload or close the page. Your language is given by the address itself (/en/ or /fr/): nothing is stored to remember it. Like any website, the server records the download of the page and its files in its access logs (IP address, date and time, address requested, browser name). It never receives what you type.
Code that runs here
  • app.js: the calendar calculations and the page, written for R-no Toolbox. Not minified, no third-party library. 33.5 kB
    SHA-256 9ce435a5963b6dbe76c495008a439ef28f5d8e2a4f0b593742a75eaa8c1b2d6f
  • textes.js: the French messages of the tool, shown by its script (the rest of the French page is written into its HTML when the site is built). It only defines texts, with no logic. 13.4 kB
    SHA-256 555c107053795be10af101b709f9983cd686ad080c68c4ef059e0c6b04aaaeb6
  • /commun/langue.js: the language helper, the same on every page of the site. It reads the language of the page and gives the tool its messages in that language. It stores nothing. 1.6 kB
    SHA-256 80f76f69773ef628d36d09bf8387cfedebda4529210d7120649b6f5603310631
Public holidays
Legal public holidays of France (Labour Code, article L3133-1, with Alsace-Moselle and the overseas departments), Belgium, Ireland, Italy, Luxembourg, the Netherlands, the United Kingdom (England and Wales, Scotland, Northern Ireland, with the one-off days proclaimed since 1995), the United States (federal holidays) and Canada (federal Labour Code and each province’s employment standards law). They are computed in the page for any year: fixed dates, “third Monday of January”, and days that follow Easter (Meeus, Jones and Butcher’s algorithm). The rules were checked in September 2026 against the laws and official sites; days created since 2000 only count from their first year (Juneteenth 2021, 4 October in Italy 2026…). A holiday falling on a weekend is only moved where the law fixes the replacement day (United Kingdom, United States, Canada Day, Quebec’s Fête nationale, Manitoba, Nova Scotia, Prince Edward Island, Newfoundland, Saskatchewan): it is then marked “substitute day”. Elsewhere, the law gives a day off chosen in the company, or pay, which cannot be known here. Nothing is downloaded: the rules are written in app.js.
How it was checked
Day and week additions were compared with GNU date on 2,000 random dates between 1900 and 2100, month additions with an independent calculation of the end-of-month rule, business days with a day-by-day count, and Easter with a second, independent algorithm (Gauss’s, as corrected) for every year from 1583 to 9999, plus known dates. The tests run again before each release.
Check it yourself
Download a script and compare its fingerprint with the one above:
curl -s https://r-no.fr/dates/add/app.js | shasum -a 256
Limits
Gregorian calendar, extended before 1582 as if it had always been in use, from year 1 to 9999. Public holidays: only the legal ones. Days off by custom or collective agreement are not counted: Good Friday and mid-Lent in the French West Indies, 21 July in Guadeloupe and Martinique, patron saints in Italy, the extra days in Newfoundland’s public service… In the Netherlands, 5 May is a holiday every year under the law, but a day off only if the collective agreement says so. Quebec: Good Friday is counted; the law lets the employer choose Easter Monday instead. From 2005 to 2007, Whit Monday was worked in France as the solidarity day, and is not counted. Before 2000, the history of the laws is not followed. No time zone: hours are those of the clock. “Today” comes from your device.