fill_tz() fills in missing time zones.
fill_utc_offsets() fills in missing UTC offsets.
Arguments
- x
A datetime object
- tz
Timezone used to fill in missing time zones
- ambiguous
What to do when the "clock time" in the new time zone is ambiguous. See
clock::as_zoned_time.clock_naive_time().
Examples
dts <- as_datetimeoffset(c("2020-01-01T01:01:01", "2020-01-01T01:01:01Z"))
fill_tz(dts, "UTC")
#> <datetimeoffset[2]>
#> [1] 2020-01-01T01:01:01Z 2020-01-01T01:01:01Z
fill_tz(dts, Sys.timezone())
#> <datetimeoffset[2]>
#> [1] 2020-01-01T01:01:01-08:00[America/Los_Angeles]
#> [2] 2020-01-01T01:01:01Z
clock::as_sys_time(dts)
#> <sys_time<second>[2]>
#> [1] NA "2020-01-01T01:01:01"
clock::as_sys_time(fill_tz(dts, "UTC"))
#> <sys_time<second>[2]>
#> [1] "2020-01-01T01:01:01" "2020-01-01T01:01:01"
clock::as_zoned_time(dts)
#> <zoned_time<second><America/Los_Angeles>[2]>
#> [1] NA "2019-12-31T17:01:01-08:00"
clock::as_zoned_time(fill_tz(dts, ""))
#> <zoned_time<second><America/Los_Angeles>[2]>
#> [1] "2020-01-01T01:01:01-08:00" "2019-12-31T17:01:01-08:00"
if ("America/New_York" %in% OlsonNames()) {
# non-ambiguous UTC offsets
dt <- as_datetimeoffset("2020-11-01T12:30:00[America/New_York]")
cat("unfilled: ", get_utc_offsets(dt), "\n")
dt <- fill_utc_offsets(dt)
cat("filled: ", get_utc_offsets(dt), "\n")
# ambiguous UTC offsets due to DST
dt0 <- as_datetimeoffset("2020-11-01T01:30:00[America/New_York]")
dt <- fill_utc_offsets(dt0)
cat('`ambiguous = "NA"` (default): ', get_utc_offsets(dt), "\n")
dt <- fill_utc_offsets(dt0, ambiguous = "earliest")
cat('`ambiguous = "earliest"`: ', get_utc_offsets(dt), "\n")
dt <- fill_utc_offsets(dt0, ambiguous = "latest")
cat('`ambiguos = "latest"`: ', get_utc_offsets(dt), "\n")
}
#> unfilled: NA
#> filled: -05:00
#> `ambiguous = "NA"` (default): NA
#> `ambiguous = "earliest"`: -04:00
#> `ambiguos = "latest"`: -05:00