Skip to content

Commit

Permalink
Hard-code timezone to Europe/Copenhagen
Browse files Browse the repository at this point in the history
  • Loading branch information
aleksanderbl29 committed Nov 27, 2024
1 parent e80963f commit c24e8f3
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 16 deletions.
38 changes: 23 additions & 15 deletions R/dst_date_parse.R
Original file line number Diff line number Diff line change
@@ -1,50 +1,58 @@

#' Helper function to parse the dates from the statbank.
#'
#' @param A vector of length one or more with date formats like
#'
#' @param dst_date A vector of length one or more with date formats like
#' 1982M12D09, 1982M12, 1982Q4 or 1982
#' @returns Returns the input date formatted to be Europe/Copenhagen
dst_date_parse <- function(dst_date){


tz <- "Europe/Copenhagen"

if(all(stringr::str_detect(dst_date, "[0-9]{4}+[M]{1}+[0-1]{1}+[0-9]{1}+[D]{1}+(([0-2]{1}+[0-9]{1})|([3]{1}+[0-1]{1}))")) &
all(stringr::str_length(string = dst_date) == 10)){

# Daily
dst_date <- lubridate::ymd(paste0(stringr::str_sub(dst_date, start = 1L, end = 4L), "-",
stringr::str_sub(dst_date, start = -5L, end = -4L), "-",
stringr::str_sub(dst_date, start = -2L)))
stringr::str_sub(dst_date, start = -2L)),
tz = tz)
} else if(all(stringr::str_detect(dst_date, "^[0-9]{4}+[M]{1}+(([0]{1}+[0-9]{1})|([1]{1}+[0-2]{1}))")) &
all(stringr::str_length(string = dst_date) == 7)){

# Monthly
dst_date <- lubridate::ymd(paste0(stringr::str_sub(dst_date, start = 1L, end = 4L), "-",
stringr::str_sub(dst_date, start = -2L), "-",
"-01"))
"-01"),
tz = tz)
} else if(all(stringr::str_detect(dst_date, "^[0-9]{4}+([Q]{1}|[K]{1})+[1-4]{1}")) &
all(stringr::str_length(string = dst_date) == 6)){

# Quarterly
dst_date <- lubridate::ymd(paste0(stringr::str_sub(dst_date, start = 1L, end = 4L), "-",
as.numeric(stringr::str_sub(dst_date, start = -1L)) * 3 - 2, "-",
"-01"))
"-01"),
tz = tz)
} else if(all(stringr::str_detect(dst_date, "^[0-9]{4}")) &
all(stringr::str_length(dst_date) == 4)){

# Yearly
dst_date <- lubridate::ymd(paste0(stringr::str_sub(dst_date, start = 1L, end = 4L), "-01-01"))
dst_date <- lubridate::ymd(paste0(stringr::str_sub(dst_date, start = 1L, end = 4L), "-01-01"),
tz = tz)
} else if(all(stringr::str_detect(dst_date, "^[0-9]{4}+[H]{1}+[1-2]{1}")) &
all(stringr::str_length(dst_date) == 6)){

# Half yearly
dst_date[stringr::str_sub(dst_date, start = -1L) == 1] <- paste0(stringr::str_sub(dst_date[stringr::str_sub(dst_date, start = -1L) == 1], start = 1L, end = 4L),
"-01-01")
dst_date[stringr::str_sub(dst_date, start = -1L) == 2] <- paste0(stringr::str_sub(dst_date[stringr::str_sub(dst_date, start = -1L) == 2], start = 1L, end = 4L),
"-07-01")
dst_date <- lubridate::ymd(dst_date)

dst_date <- lubridate::ymd(dst_date,
tz = tz)

} else {
stop("None of the regular expressions were matched. Please inspect the dates.")
}

return(dst_date)
}

5 changes: 4 additions & 1 deletion man/dst_date_parse.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit c24e8f3

Please sign in to comment.