R: Construct a weekday vector

weekday {clock} | R Documentation

## Construct a weekday vector

### Description

A `weekday` is a simple type that represents a day of the week.

The most interesting thing about the weekday type is that it implements circular arithmetic, which makes determining the "next Monday" or "previous Tuesday" from a sys-time or naive-time easy to compute. See the examples.

### Usage

    weekday(code = integer(), ..., encoding = "western")

### Arguments

`code` | `[integer]` Integer codes between `[1, 7]` representing days of the week. The interpretation of these values depends on `encoding`.
`...` | These dots are for future extensions and must be empty.
`encoding` | `[character(1)]` One of: `"western"`: Encode weekdays assuming `1 == Sunday` and `7 == Saturday`. `"iso"`: Encode weekdays assuming `1 == Monday` and `7 == Sunday`. This is in line with the ISO standard.

### Value

A weekday vector.

### Examples

    x <- as_naive_time(year_month_day(2019, 01, 05))

    # This is a Saturday!
    as_weekday(x)

    # Adjust to the next Wednesday
    wednesday <- weekday(clock_weekdays$wednesday)

    # This returns the number of days until the next Wednesday using
    # circular arithmetic
    # "Wednesday - Saturday = 4 days until next Wednesday"
    wednesday - as_weekday(x)

    # Advance to the next Wednesday
    x_next_wednesday <- x + (wednesday - as_weekday(x))

    as_weekday(x_next_wednesday)

    # What about the previous Tuesday?
    tuesday <- weekday(clock_weekdays$tuesday)
    x - (as_weekday(x) - tuesday)

    # What about the next Saturday?
    # With an additional condition that if today is a Saturday,
    # then advance to the next one.
    saturday <- weekday(clock_weekdays$saturday)
    x + 1L + (saturday - as_weekday(x + 1L))

    # You can supply an ISO coding for `code` as well, where 1 == Monday.
    weekday(1:7, encoding = "western")
    weekday(1:7, encoding = "iso")

[Package clock version 0.4.1 Index]