R中的时区:如何避免EST等含糊不清的术语?

sfu*_*fuj 6 timezone timestamp r time-series posixct

我在R中有一系列字符时间戳.当我POSIXct使用直观方法改变他们的类时,R指定模糊的时区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 = "") 
Run Code Online (Sandbox Code Playgroud)

在我的两个(Mac和Windows)盒子上产生相同的输出:

"2012-08-06 15:32:00 EST"
Run Code Online (Sandbox Code Playgroud)

这里的问题EST可能是任意数量的时区:美国的东部标准时间,或澳大利亚的东部标准时间,或加拿大的另一个时区(来自?timezone):

请注意,其中一些名称可能与您的想法不同:特别是EST是加拿大使用的时区,没有夏令时,而不是EST5EDT和(澳大利亚)东部标准时间.

有一种方法可以设置时区,避免使用此EST标签.它被提及,但在R ?timezone帮助中没有完全解释.根据澳大利亚新闻社的报道,将x设置为好奇号登陆火星的时间:

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

我们可以通过将其转换为美国时区并使用加州新闻报道进行检查来测试这是否正确:

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

如果使用此Etc/GMT+nEtc/GMT-n表示法,请注意以下警告?timezone:

许多系统支持GMT + n和GMT-n形式的时区,它们与UTC固定偏移(因此没有DST).与某些用法相反(但与PST8PDT等名称一致),负偏移是UTC之前(东)的时间,正偏差是UTC后面(西侧)的时间.

Jos*_*ich 6

第一个示例中的第1行和第3行产生相同的输出,因为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"
Run Code Online (Sandbox Code Playgroud)