2012-08-13 48 views
6

我在R中有一系列字符時間戳。當我使用直觀的方法將他們的類更改爲POSIXct時,R分配了模糊的時區EST時區:如何避免模糊術語,如EST?

例如:

as.POSIXct("2012-08-06 15:32:00") 
as.POSIXct("2012-08-06 15:32:00", tz = "Australia/Brisbane") 
as.POSIXct("2012-08-06 15:32:00", tz = "") 

都產生在我的兩個(Mac和Windows)盒相同的輸出:

"2012-08-06 15:32:00 EST" 

這裏的問題是EST不應該是個時區:東部標準時間在美國或澳大利亞東部標準時間或加拿大的其他時區(從?timezone):

請注意,這些名稱中的一些可能不是您想象的那樣:在 特定的EST是在加拿大使用的時區,沒有夏令時 時間,而不是EST5EDT和(澳大利亞)東部標準時間。

有一種方法來設置避免這個EST標籤的時區。這暗示了,但在R ?timezone幫助中沒有完全解釋。 x設置爲火星上的好奇心着陸時所報告的Australian news service

x <- as.POSIXct("2012-08-06 15:32:00", tz = "Etc/GMT-10") 
x 
"2012-08-06 15:32:00 GMT-10" 

我們可以測試,這是正確的將其轉換爲美國時區,並檢查了Californian news report

y <- format(x, tz = "America/Los_Angeles") 
y 
"2012-08-05 22:32:00" 

如果使用此Etc/GMT+nEtc/GMT-n符號,請以下警告從?timezone提防:

許多系統支持格式爲GMT + n和GMT-n的時區,這些時區的格式爲從UTC到固定的偏移量(因此無DST)的 。與某些用法相反(但是 與諸如PST8PDT之類的名稱一致),負偏移是UTC之前(東)的 時間,正偏移是UTC後方(西部)的時間(西) UTC的時間。

+0

剛剛發現這個[相關問題及答案(http://stackoverflow.com/a/8011954/1265353) – sfuj 2012-08-13 02:14:31

+2

有時間/區處理一個SO「最佳做法」,可能與概念性幫助事物的一面:: http://stackoverflow.com/questions/2532729/daylight-saving-time-and-timezone-best-practices。 – Thell 2012-08-13 03:30:47

回答

6

第一個示例中的第一行和第三行產生相同的輸出,因爲tz=""as.POSIXct的默認值。第二行更有趣,因爲時區是明確定義的。請注意,"EST"只是默認打印時區的方式tzone屬性仍然是明確的。

R> x <- as.POSIXct("2012-08-06 15:32:00", tz="Australia/Brisbane") 
R> x 
[1] "2012-08-06 15:32:00 EST" 
R> attr(x, "tzone") 
[1] "Australia/Brisbane" 
+0

謝謝喬希。這就是我想要確保的。 – sfuj 2012-08-26 23:29:13