This is a year-month-day method for the calendar_start() and calendar_end() generics. They adjust components of a calendar to the start or end of a specified precision.

# S3 method for clock_year_month_day
calendar_start(x, precision)

# S3 method for clock_year_month_day
calendar_end(x, precision)

Arguments

x

[clock_year_month_day]

A year-month-day vector.

precision

[character(1)]

One of:

  • "year"

  • "month"

  • "day"

  • "hour"

  • "minute"

  • "second"

  • "millisecond"

  • "microsecond"

  • "nanosecond"

Value

x at the same precision, but with some components altered to be at the boundary value.

Examples

# Hour precision x <- year_month_day(2019, 2:4, 5, 6) x
#> <year_month_day<hour>[3]> #> [1] "2019-02-05 06" "2019-03-05 06" "2019-04-05 06"
# Compute the start of the month calendar_start(x, "month")
#> <year_month_day<hour>[3]> #> [1] "2019-02-01 00" "2019-03-01 00" "2019-04-01 00"
# Or the end of the month, notice that the hour value is adjusted as well calendar_end(x, "month")
#> <year_month_day<hour>[3]> #> [1] "2019-02-28 23" "2019-03-31 23" "2019-04-30 23"
# Compare that with just setting the day of the month to `"last"`, which # doesn't adjust any other components set_day(x, "last")
#> <year_month_day<hour>[3]> #> [1] "2019-02-28 06" "2019-03-31 06" "2019-04-30 06"
# You can't compute the start / end at a more precise precision than # the input is at try(calendar_start(x, "second"))
#> Error : Can't compute the start of `x` (hour) at a more precise precision (second).