2011-04-07 25 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

相關問題