Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
时区问题在R中,我想使用UTC+;0100,即使在夏天,尽管CET自动切换到CEST_R_Timezone_Dst_Timezone Offset_Lubridate - Fatal编程技术网

时区问题在R中,我想使用UTC+;0100,即使在夏天,尽管CET自动切换到CEST

时区问题在R中,我想使用UTC+;0100,即使在夏天,尽管CET自动切换到CEST,r,timezone,dst,timezone-offset,lubridate,R,Timezone,Dst,Timezone Offset,Lubridate,我在“CET”(中欧时间=冬季时间=UTC+0100)和“CEST”(中欧夏季时间=UTC+0200)中获得了一些带有POSIXct时间戳的数据。因为夏令时,我在绘图和计算方面遇到了一些麻烦,所以我希望所有的时间戳都是UTC+0100时间 以下是切换回冬季时间日的时间戳示例: > tdf$time_posix_vec[1:20] [1] "2015-10-25 00:00:00 CEST" "2015-10-25 00:15:00 CEST" "2015-10-25 00:30:00 CE

我在“CET”(中欧时间=冬季时间=UTC+0100)和“CEST”(中欧夏季时间=UTC+0200)中获得了一些带有POSIXct时间戳的数据。因为夏令时,我在绘图和计算方面遇到了一些麻烦,所以我希望所有的时间戳都是UTC+0100时间

以下是切换回冬季时间日的时间戳示例:

> tdf$time_posix_vec[1:20]
[1] "2015-10-25 00:00:00 CEST" "2015-10-25 00:15:00 CEST" "2015-10-25 00:30:00 CEST" "2015-10-25 00:45:00 CEST" "2015-10-25 01:00:00 CEST"
 [6] "2015-10-25 01:15:00 CEST" "2015-10-25 01:30:00 CEST" "2015-10-25 01:45:00 CEST" "2015-10-25 02:00:00 CEST" "2015-10-25 02:15:00 CEST"
[11] "2015-10-25 02:30:00 CEST" "2015-10-25 02:45:00 CEST" "2015-10-25 02:00:00 CET"  "2015-10-25 02:15:00 CET"  "2015-10-25 02:30:00 CET" 
[16] "2015-10-25 02:45:00 CET"  "2015-10-25 03:00:00 CET"  "2015-10-25 03:15:00 CET"  "2015-10-25 03:30:00 CET"  "2015-10-25 03:45:00 CET" 
为了演示这个问题,我选择了一个时间戳示例:

> tx <- tdf$time_posix_vec[7]
> tx
[1] "2015-10-25 01:30:00 CEST"
我想,时区处理程序知道,在我所在的位置,CET在3月的最后一周和10月的最后一周之间变为CEST

为了解决这个问题,我可以使用阿尔及利亚的时区,因为阿尔及利亚使用CET而没有夏令时(正如维基百科告诉我的)。然而,这在未来可能会改变,并且

我想知道这个解决方案是否会因此有点不安全

> with_tz(tx, tzone = "Africa/Algiers")
[1] "2015-10-25 00:30:00 CET"
我认为最好的方法是使用“UTC+1”,但with_tz的行为与我的预期正好相反:

> with_tz(tx, tzone = "UTC+1")
[1] "2015-10-24 22:30:00 UTC"
要获得00:30:00,我必须使用:

> with_tz(tx, tzone = "UTC-1")
[1] "2015-10-25 00:30:00 UTC"
但是,标签“UTC”也是错误的,因为在UTC中是错误的

> with_tz(tx, tzone = "UTC")
[1] "2015-10-24 23:30:00 UTC"
  • 为什么“UTC+1”将时间戳切换为UTC-0100而不是UTC+0100
  • 是否有一个函数将时间戳强制设置为UTC+0100,并为时间戳提供正确的时区标签,因此结果将是
    “2015-10-25 00:30:00 UTC+1”
提前感谢,


你好,彼得我想我找到了解决办法:现在我用

t1 <- as.POSIXct("2016-07-12 17:43","Etc/GMT-1") 

t1您可以尝试转换为POSIXlt,指定所需的时区,然后转换回POSIXct,仍然指定所需的时区。不是最好的,但可能是一个解决办法。我发现它设置了时区,在导入时使用tz=,它可以防止以后出现许多问题。嗨,Dave,谢谢你的回答。
t1 <- as.POSIXct("2016-07-12 17:43","Etc/GMT-1")