These are Date methods for the arithmetic generics.
Calendrical based arithmetic:
These functions convert to a year-month-day calendar, perform the arithmetic, then convert back to a Date.
Time point based arithmetic:
These functions convert to a time point, perform the arithmetic, then convert back to a Date.
# S3 method for Date add_years(x, n, ..., invalid = NULL) # S3 method for Date add_quarters(x, n, ..., invalid = NULL) # S3 method for Date add_months(x, n, ..., invalid = NULL) # S3 method for Date add_weeks(x, n, ...) # S3 method for Date add_days(x, n, ...)
A Date vector.
An integer vector to be converted to a duration, or a duration
corresponding to the arithmetic function being used. This corresponds
to the number of duration units to add.
These dots are for future extensions and must be empty.
One of the following invalid date resolution strategies:
x after performing the arithmetic.
Adding a single quarter with
add_quarters() is equivalent to adding
n are recycled against each other.
Only calendrical based arithmetic has the potential to generate invalid dates. Time point based arithmetic, like adding days, will always generate a valid date.
#>  "2020-01-01" "2021-01-01" "2022-01-01" "2023-01-01" "2024-01-01"y <- as.Date("2019-01-31") # Adding 1 month to `y` generates an invalid date. Unlike year-month-day # types, R's native Date type cannot handle invalid dates, so you must # resolve them immediately. If you don't you get an error: try(add_months(y, 1:2))#> Error : Invalid date found at location 1. #> ℹ Resolve invalid date issues by specifying the `invalid` argument.#> <year_month_day<day>> #>  "2019-02-31" "2019-03-31"# Resolve invalid dates by specifying an invalid date resolution strategy # with the `invalid` argument. Using `"previous"` here sets the date to # the previous valid date - i.e. the end of the month. add_months(y, 1:2, invalid = "previous")#>  "2019-02-28" "2019-03-31"