[R] Detecting invalid time zone names
Christian Lederer
christianlederer at t-online.de
Sat Nov 14 04:36:14 CET 2009
Hi folks,
i have to deal with data sets, which have a column with UTC seconds
and a second column containing the timezone.
However this timezone is not always valid in R, e.g. misspelled.
Unfortunately, the date/time functions like ISOdatetime or as.POSIXlt
silently accept invalid timezone arguments, and consequently e.g.
truncating to days gives wrong results.
After experimenting with invalid timezone names and as.POSIXlt,
i found that i could use this simple function to check if a
string is a valid time zone name:
checktz <- function(s)
## Returns TRUE if s is a valid time zone name, otherwise FALSE
{
t <- as.POSIXlt(ISOdatetime(1970, 1, 1, 0, 0, 12345, tz = s))
tzone <- attributes(t)$tzone
valid <- s != "" &&
(length(tzone) == 1 || tzone[2]!= "UTC")
return(valid)
}
However this relies on undocumented behavior of a.POSIXlt.
Is there a clean way to to check if a string represents a valid
timezone name in R?
Christian
More information about the R-help
mailing list