我在 R 中有一系列字符时间戳。当我将他们的类更改为POSIXct
使用直观方法时,R 分配了模棱两可的 timezone 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
标签。?timezone
它在 R帮助中被提及,但没有完全解释。设置 x 为澳大利亚新闻机构报道的好奇号登陆火星的时间:
x <- as.POSIXct("2012-08-06 15:32:00", tz = "Etc/GMT-10")
x
"2012-08-06 15:32:00 GMT-10"
我们可以通过将其转换为美国时区并查看加利福尼亚新闻报道来测试这是否正确:
y <- format(x, tz = "America/Los_Angeles")
y
"2012-08-05 22:32:00"
如果使用此Etc/GMT+n
或Etc/GMT-n
表示法,请注意以下警告?timezone
:
许多系统支持 GMT+n 和 GMT-n 形式的时区,它们与 UTC 有固定的偏移量(因此没有 DST)。与某些用法相反(但与 PST8PDT 等名称一致),负偏移量是 UTC(以东)UTC 之前的时间,正偏移量是 UTC(以西)UTC 的时间。