为什么 R 不将“CST”识别为有效时区?

Zac*_*ach 6 time timezone datetime r date

此代码有效:

ISOdatetime(2011,4,7,12,0,0, tz = "EST")
Run Code Online (Sandbox Code Playgroud)

此代码不会:

ISOdatetime(2011,4,7,12,0,0, tz = "CST")
Run Code Online (Sandbox Code Playgroud)

我想要中央时区,不调整夏令时。我究竟做错了什么?我在哪里可以找到 R 识别的时区表?

编辑:感谢 Josh 提供的信息,但ISOdatetime(2011,3,13,2,0,0, tz = "America/Chicago")产生 NA,不幸的是我的数据集中的一个值。任何想法如何处理这个?我的数据集似乎是芝加哥时间,但没有遵守夏令时。

Jos*_*ich 7

请参阅?timezone和文件,R_HOME/share/zoneinfo/zone.tab

没有“中央时区,没有夏令时调整”这样的东西。美国中部时区有 DST 规则,这些年来它们发生了变化。您始终可以将日期读取为 GMT,加上 6 小时,然后转换为 CST6CDT。

> .POSIXct(ISOdatetime(2011,3,13,2,0,0, tz="GMT")+3600*6, tz="CST6CDT")
[1] "2011-03-13 03:00:00 CDT"
> .POSIXct(ISOdatetime(2011,3,13,2,0,0, tz="GMT")+3600*6, tz="America/Chicago")
[1] "2011-03-13 03:00:00 CDT"
Run Code Online (Sandbox Code Playgroud)

  • @Benjamin,正如它在`?timezone` 中所说,EST _not_ 美国东部时间,它“是加拿大_没有_夏令时使用的时区”。它也在`R_HOME/share/zoneinfo/EST` 中定义。请注意,没有相应的 CST 文件。如果您发现文档不好,我们非常欢迎您提交对 R-core 的改进。;-) (2认同)