Fix R handling of dates to work for tsibble

This commit is contained in:
Ben Letham 2021-03-29 15:06:09 -07:00
parent 94e5d2e80a
commit 3f4edef7f5

View file

@ -260,17 +260,19 @@ set_date <- function(ds) {
ds <- as.character(ds)
}
# Type should be either character, or an object compatible with lubridate
if (is.character(ds)) {
# If a datetime, strip timezone and replace with GMT.
if (lubridate::is.instant(ds)) {
ds <- as.POSIXct(lubridate::force_tz(ds, "GMT"), tz = "GMT")
}
else {
# Assume it can be coerced into POSIXct
if (min(nchar(ds), na.rm=TRUE) < 12) {
ds <- as.POSIXct(ds, format = "%Y-%m-%d", tz = "GMT")
} else {
ds <- as.POSIXct(ds, format = "%Y-%m-%d %H:%M:%S", tz = "GMT")
}
} else {
# Strip timezone and replace with GMT
ds <- as.POSIXct(lubridate::force_tz(ds, "GMT"), tz = "GMT")
}
attr(ds, "tzone") <- "GMT"
return(ds)
}