2011-04-07 54 views
2

此代码的工作:为什么R不认识'CST'是一个有效的时区?

ISOdatetime(2011,4,7,12,0,0, tz = "EST") 

此代码不:

ISOdatetime(2011,4,7,12,0,0, tz = "CST") 

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

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

+0

是您的目的所需的时区,还是您可以忽略它并使用GMT? – 2011-04-07 19:55:20

+0

@Joshua Ulrich:现在我会忽略它并使用GMT。不幸的是,我以这种方式获得了几个时区的数据,并希望利用R易于使用的时区转换功能。如果我想在格林尼治标准时间后增加(或减去)一小时,那么最好的方法是什么? – Zach 2011-04-07 20:00:11

+0

我会这样做我的答案是如何做到的。尽管我发现您的数据有时间戳不符合时区的DST约定,但我感到好奇。您的原始数据是否有明确的时区(例如“2011-03-13 02:00:00 CST”),还是他们可能是GMT? – 2011-04-07 20:06:11

回答

3

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

有没有这样的事情,“中央时区,夏令时没有调整”。美国中部时区有DST规则,并且多年来一直在变化。您可以随时在日期中读取格林威治标准时间,增加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" 
+0

尼斯,反对​​票,因为我还没有回应OP的编辑呢...... – 2011-04-07 18:51:23

+0

感谢您的链接。有什么方法可以指定“没有夏令时的芝加哥时间?” 'ISOdatetime(2011,3,13,2,0,0,tz =“America/Chicago”)'产生NA,不幸的是我的数据集中有一个值。 – Zach 2011-04-07 18:52:15

+0

**尼斯,一票倒票,因为我还没有回应OP的编辑呢...... ** - 我想我们几乎在同一时间到达那里。 – Zach 2011-04-07 18:53:48

相关问题