unknown timezone name in R strptime/as.POSIXct

?Sys.timezone has some hints, specifically to look in: "R_HOME/share/zoneinfo/zone.tab" (R_HOME is the directory R is installed in). Keep in mind that time zones are nasty and many of their nuances are operating system (and locale?) specific.

In your specific case, you want "CST6CDT" instead of "CST".


Timezone stuff can drive you NUTS!!

Being located in Germany, this is what I used to do to set my tz:

> options(tz="Europe/Berlin")

Doing so, I always wondered why R would throw "unknown timezone" warnings:

> t <- "2011-11-08 09:42:00"
> as.POSIXct(t, tz=getOption("tz"))
[1] "2011-11-08 09:42:00 CET"
Warning messages:
1: In strptime(xx, f <- "%Y-%m-%d %H:%M:%OS", tz = tz) :
  unknown timezone 'MET-1MST'
2: In as.POSIXct.POSIXlt(x) : unknown timezone 'MET-1MST'
3: In strptime(x, f, tz = tz) : unknown timezone 'MET-1MST'
4: In as.POSIXct.POSIXlt(as.POSIXlt(x, tz, ...), tz, ...) :
  unknown timezone 'MET-1MST'
5: In as.POSIXlt.POSIXct(x, tz) : unknown timezone 'MET-1MST'

Someday I found out that setting tz via options() was not enough as the environment variable TZ is not affected and hence all the the trouble:

> Sys.getenv("TZ")
[1] "MET-1MST"

Changing this should do away with the nasty warnings:

> Sys.setenv(TZ="Europe/Berlin")
> Sys.getenv("TZ")
[1] "Europe/Berlin"
> as.POSIXct(t, tz=getOption("tz"))
[1] "2011-11-08 09:42:00 CET"