ctutc <- function(x) { as.POSIXct(x, tz = "UTC") } ctus <- function(x) { as.POSIXct(x, tz = "America/New_York") } cteu <- function(x) { as.POSIXct(x, tz = "Europe/Amsterdam") } ltutc <- function(x) { as.POSIXlt(x, tz = "UTC") } ltus <- function(x) { as.POSIXlt(x, tz = "America/New_York") } ltam <- ltus lteu <- function(x) { as.POSIXct(x, tz = "Europe/Amsterdam") } NAam <- .POSIXct(NA_real_, tz = "America/New_York") NAem <- .POSIXct(NA_real_, tz = "Europe/Amsterdam") NAutc <- .POSIXct(NA_real_, tz = "UTC") ymd_hms <- function(..., tz = "UTC") { x <- unlist(list(...)) out <- .POSIXct(rep_len(NA_real_, length(x)), tz = tz) nna <- !is.na(x) out[nna] <- as.POSIXct(x[nna], tz = tz) out } origin <- as.POSIXct("1970-01-01 00:00:00", tz = "UTC") ymd <- function(..., tz = NULL) { x <- unlist(list(...)) if (is.null(tz)) { out <- as.Date(rep_len(NA_real_, length(x)), origin = origin) nna <- !is.na(x) out[nna] <- as.Date(x[nna], tz = "UTC") } else { out <- .POSIXct(rep_len(NA_real_, length(x)), tz = tz) nna <- !is.na(x) out[nna] <- as.POSIXct(paste(x[nna], "00:00:00", sep = " "), tz = tz) } out } second <- function(x) as.POSIXlt(x, tz = timechange:::tz(x))$sec hour <- function(x) as.POSIXlt(x, tz = timechange:::tz(x))$hour minute <- function(x) as.POSIXlt(x, tz = timechange:::tz(x))$min month <- function(x, label = FALSE, abbr = TRUE, locale = Sys.getlocale("LC_TIME")) { x <- as.POSIXlt(x, tz = timechange:::tz(x))$mon + 1 if (!label) return(x) names <- .get_locale_regs(locale)$month_names labels <- if (abbr) names$abr else names$full ordered(x, levels = 1:12, labels = labels) } year <- function(x) as.POSIXlt(x, tz = timechange:::tz(x))$year + 1900 mday <- function(x) as.POSIXlt(x, tz = timechange:::tz(x))$mday day <- function(x) as.POSIXlt(x, tz = timechange:::tz(x))$mday wday <- function(x, label = FALSE, abbr = TRUE, week_start = 1, locale = Sys.getlocale("LC_TIME")) { x <- as.POSIXlt(x, tz = timechange:::tz(x))$wday + 1 start <- as.integer(week_start) if (start > 7 || start < 1) stop("Invalid 'week_start' argument; must be between 1 and 7") if (start != 7) { x <- 1 + (x + (6 - start)) %% 7 } if (!label) { return(x) } names <- .get_locale_regs(locale)$wday_names labels <- if (abbr) names$abr else names$full ordered(x, levels = 1:7, labels = .shift_wday_names(labels, week_start = start)) } yday <- function(x) as.POSIXlt(x, tz = timechange:::tz(x))$yday + 1 now <- function(tzone = "") time_at_tz(Sys.time(), tzone) NA_Date_ <- structure(NA_real_, class = "Date") NA_POSIXct_ <- structure(NA_real_, class = c("POSIXct", "POSIXt"), tzone = "UTC")