R-获取夏令时的开始和结束时间

问题描述 投票:1回答:1

我的问题很简单,但是我没有真正找到答案。

我想写一个像这样的函数:

get_dst <- function(y = 2019){

}

y是函数的年份输入

输出应该是代表欧洲夏令时开始和结束的日期时间的列表或向量。

2019年的输出将是:

31-03-2019 02:00:00, 27-10-2019 03:00:00

2020年的输出将是:

29-03-2020 02:00:00, 25-10-2019 03:00:00

而且我认为dplyr在对日期时间的变量进行分组时应该有一种处理它们的方法,因为很难与它们一起使用。

r datetime dst
1个回答
1
投票

在函数中,我们可以创建一个序列并应用dst以返回TRUE / FALSE,子集并获得range

get_dst <- function(y = 2019, tz){
         start <- paste0(y, '-01-01')
         end <- paste0(y, '-12-31')
         d1 <- seq(as.POSIXct(start, tz = tz),
              as.POSIXct(end, tz =tz), by = 'hour')
         range(d1[lubridate::dst(d1)])
  }

get_dst(2019,  "America/New_York")
© www.soinside.com 2019 - 2024. All rights reserved.