#' Clean datetime
#'
#' Helper function to validate datetimes and convert them to yyyy-mm-ddTHH:MM:SS-00:00
#'
#' @param datetime vector of datetimes with class character or POSIXct
#' @return vector of datetimes in character format like yyyy-mm-ddTHH:MM:SS-00:00
shopr_clean_datetime <- function(datetime){
# Validate datetimes and convert them to yyyy-mm-ddTHH:MM:SS-00:00
# format: 2014-04-25T16:15:47-04:00
if(is.null(datetime)){
# Early exit in case datetime is NULL
return(NULL)
} else if(length(datetime) != 1L){
# Make sure datetime is length 1
stop("datetime should be length 1")
} else if(methods::is(datetime, "character")){
# If datetime is a character, make sure it's in the proper format
datetimePattern <- "^\\d{4}-\\d{2}-\\d{2}T\\d{2}\\:\\d{2}\\:\\d{2}(\\-|\\+)\\d{2}\\:\\d{2}$"
if(!stringr::str_detect(string = datetime, pattern = datetimePattern)){
stop("Improper datetime format. Should be like 2014-04-25T16:15:47-04:00")
}
return(datetime)
} else if(methods::is(datetime, "POSIXct")){
# If datetime is a datetime (class POSIXct), return its character equivalent format in UTC time
# Make a copy of datetime with the timezone changed to UTC
datetimeUTC <- datetime
attr(datetimeUTC, "tzone") <- "UTC"
# Convert datetimeUTC to a character in the correct format
datetimeUTC2 <- format(datetimeUTC, "%Y-%m-%dT%H:%M:%S-00:00")
return(datetimeUTC2)
} else {
stop("Improper datetime class. Should be character or POSIXct")
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.