将CEST(UTC+2)的R时区转换为UTC

3

R中关于时区归属的问题。

从CEST(UTC+2)到UTC

在R中,有一些有关时区更改的内容我并不理解。

让我们看一个例子。

datetime = as.POSIXct(paste(Sys.Date()-7,"00:00:00"), tz="CEST")
[1] "2018-04-04 CEST"

我们先回忆一下,时区CEST代表中欧夏令时,相当于UTC+2。

了解了这个之后,我想将我的datetime赋予UTC时区。我期望得到的是"2018-04-03 22:00:00 UTC"。但实际上,我得到的结果是:

attr(datetime,"tzone") <- "UTC"
> datetime
[1] "2018-04-04 UTC"

另一件事是,当我将UTC+2时区分配给我的CEST日期时间时,我得到了我想要的结果:

datetime2 = as.POSIXct(paste(Sys.Date()-7,"00:00:00"), tz="CEST")
[1] "2018-04-04 CEST"
attr(datetime2,"tzone") <- "UTC+2"
> datetime2
[1] "2018-04-03 22:00:00 UTC"

虽然CEST相当于UTC+2,但我期望得到的结果是"2018-04-04 UTC"。

有人能理解这里的逻辑吗?


1
不要在这里使用时区缩写。请使用IANA时区标识符。例如,tz="Europe/Paris" - Matt Johnson-Pint
1个回答

0

您可以将系统时区设置为UTC。否则,它将始终自动将您的时间数据转换为本地操作系统时间。

Sys.setenv(TZ='UTC') 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接