R seq.POSIXt:按小时生成常规序列,忽略夏令时的变化

时间:2016-12-10 11:05:47

标签: r

我使用这个简单的代码在两个日期之间生成一系列小时时间步骤:

dates <- strftime(seq(ISOdate(2015, 1, 1, 0, tz = "GMT"), ISOdate(2015, 12, 31, 23, tz = "GMT"), by = "hour"), format = "%Y-%m-%d %H:%M:%S")

问题在于我不想在考虑夏令时变化的情况下产生这些时间。

我在文档中看到我可以使用“by ='day'”或“by ='DSTday'”参数生成序列天数,但我没有看到类似的选项...

我还读到使用“tz ='UTC'”可以解决问题,但似乎没有用。

知道如何做到这一点?感谢

2 个答案:

答案 0 :(得分:1)

好的,找到了。可以在lubridate包中使用dst函数:

library(lubridate)
dates <- seq(as.POSIXct("2015-01-01 0:00:00", tz = "UTC"), as.POSIXct("2015-12-31 23:00:00", tz="UTC"), by="hour")
dates[dst(dates)] <- dates[dst(dates)] - 3600

我会对使用基础软件包的解决方案感兴趣,但是......

答案 1 :(得分:0)

要添加基于Marc解决方案的升级,我认为一个功能程序是:

dates <- dates - dst(dates)*3600.