R不再接受GMT + n/GMT-n格式的时区

CCu*_*tis 2 timezone r timezone-offset

?timezones 状态 "Most platforms support time zones of the form GMT+n and GMT-n, which assume at a fixed offset from UTC (hence no DST)."

我今年早些时候使用旧代码tz="GMT-8".只有对我的计算机的更改已经更新到R版本"R version 3.2.2 (2015-08-14)"并通过向我的Rprofile添加一行代码从旧用户帐户迁移我的库"C:\Program Files\R\R-3.2.2\library\base\R".只是要详细的代码了.libPaths(c("C:/Users/XXXX XXXX/Documents/R/win-library/3.2",.Library.site)).为什么我的系统突然不接受这种tz格式?我可以更改哪些系统设置来解决此问题?

下面的工作示例.

tdat<-c("11/19/2014 12:45", "11/19/2014 13:00", "11/19/2014 13:15", 
"11/19/2014 13:30", "11/19/2014 13:45", "11/19/2014 14:00", "11/19/2014 14:15", 
"11/19/2014 14:30", "11/19/2014 14:45", "11/19/2014 15:00")

as.POSIXct(strptime(tdat,"%m/%d/%Y %H:%M",tz="GMT-8"))

Warning messages:
1: In strptime(tdat, "%m/%d/%Y %H:%M", tz = "GMT-8") :
  unknown timezone 'GMT-8'
2: In as.POSIXct.POSIXlt(strptime(tdat, "%m/%d/%Y %H:%M", tz = "GMT-8")) :
  unknown timezone 'GMT-8'
3: In as.POSIXlt.POSIXct(x, tz) : unknown timezone 'GMT-8'
Run Code Online (Sandbox Code Playgroud)

Mat*_*int 7

如果您的平台使用标准tzdb时区,那么您确实可以在表单中指定固定的整小时区域:Etc/GMT+8.

但是,请注意:

  • 标志与您可能期望的相反. Etc/GMT-8在中国. Etc/GMT+8在美国.

  • 有很多现实世界时区使用半小时或45分钟的偏移,这些不能用这种形式表示.

  • 这不考虑夏令时或时区的其他历史变化.

因此,更好的想法是使用命名时区,如此处所示.

例如,对于美国太平洋时间,请使用America/Los_Angeles,因为它正确考虑夏令时,在UTC-8和UTC-7之间交替.