#' Finds offset in hours from UTC for given time zone.
#'
#' @param timezone Required. A string containing the time zone. Works with
#' designated time zones such as \option{CST} and \option{MST} for Central
#' Standard or Mountain Standard time or offset time zones such as \option{etc/GMT+6}
#' or \option{etc/GMT+7} for Central Standard and Mountain Standard time. Does NOT
#' work with location time zones like \option{America/Regina}.
#'
#' @return Returns the offset in hours as a numeric value.
#' @author Kevin Shook
#' @note This code was based on the function \code{GMTOffsetFromTz} in the
#' package \pkg{oce}, but works for more time zones and returns a negative
#' value in the western hemisphere.
#' @importFrom stringr str_to_upper str_split_fixed str_detect
#' @export
#'
#' @examples
#' GMToffset('MST')
#' GMToffset('etc/GMT+6')
GMToffset <- function (timezone) {
if(timezone == ''){
cat('Error: time zone must be specfied\n')
return(FALSE)
}
# convert to upper case
timezone <- str_to_upper(timezone)
# check for timezone string
if (timezone == "A")
return(1)
if (timezone == "ACDT")
return(10.5)
if (timezone == "ACST")
return(9.5)
if (timezone == "ADT")
return(-3)
if (timezone == "AEDT")
return(11)
if (timezone == "AEST")
return(10)
if (timezone == "AKDT")
return(-8)
if (timezone == "AKST")
return(-9)
if (timezone == "AST")
return(-4)
if (timezone == "AWDT")
return(9)
if (timezone == "AWST")
return(8)
if (timezone == "B")
return(2)
if (timezone == "BST")
return(1)
if (timezone == "C")
return(3)
if (timezone == "CDT")
return(-5)
if (timezone == "CEDT")
return(2)
if (timezone == "CEST")
return(2)
if (timezone == "CET")
return(1)
if (timezone == "CST")
return(-6)
if (timezone == "CXT")
return(7)
if (timezone == "D")
return(4)
if (timezone == "E")
return(5)
if (timezone == "EDT")
return(-4)
if (timezone == "EEDT")
return(3)
if (timezone == "EEST")
return(3)
if (timezone == "EET")
return(2)
if (timezone == "EST")
return(-5)
if (timezone == "F")
return(6)
if (timezone == "G")
return(7)
if (timezone == "GMT")
return(0)
if (timezone == "H")
return(8)
if (timezone == "HAA")
return(-3)
if (timezone == "HAC")
return(-5)
if (timezone == "HADT")
return(-9)
if (timezone == "HAE")
return(-4)
if (timezone == "HAP")
return(-7)
if (timezone == "HAR")
return(-6)
if (timezone == "HAST")
return(-10)
if (timezone == "HAT")
return(-2.5)
if (timezone == "HAY")
return(-8)
if (timezone == "HNA")
return(-4)
if (timezone == "HNC")
return(-6)
if (timezone == "HNE")
return(-5)
if (timezone == "HNP")
return(-8)
if (timezone == "HNR")
return(-7)
if (timezone == "HNT")
return(-3.5)
if (timezone == "HNY")
return(-9)
if (timezone == "I")
return(9)
if (timezone == "IST")
return(1)
if (timezone == "K")
return(10)
if (timezone == "L")
return(11)
if (timezone == "M")
return(12)
if (timezone == "MDT")
return(-6)
if (timezone == "MESZ")
return(2)
if (timezone == "MEZ")
return(1)
if (timezone == "MST")
return(-7)
if (timezone == "N")
return(-1)
if (timezone == "NDT")
return(-2.5)
if (timezone == "NFT")
return(11.5)
if (timezone == "NST")
return(-3.5)
if (timezone == "O")
return(-1)
if (timezone == "P")
return(-3)
if (timezone == "PDT")
return(-7)
if (timezone == "PST")
return(-8)
if (timezone == "Q")
return(-4)
if (timezone == "R")
return(-4)
if (timezone == "S")
return(-6)
if (timezone == "T")
return(-7)
if (timezone == "U")
return(-8)
if (timezone == "UTC")
return(0)
if (timezone == "V")
return(-9)
if (timezone == "W")
return(-10)
if (timezone == "WDT")
return(9)
if (timezone == "WEDT")
return(1)
if (timezone == "WEST")
return(1)
if (timezone == "WET")
return(0)
if (timezone == "WST")
return(8)
if (timezone == "X")
return(-11)
if (timezone == "Y")
return(-12)
if (timezone == "Z")
return(0)
if (timezone == "YST")
return(-8)
# check for etc
if (str_detect(timezone, 'ETC')){
pieces <- str_split_fixed(timezone,'GMT', 2)
return(-1*as.numeric(pieces[2]))
}
else{
stop('Could not find time zone')
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.