如何在时间戳向量中找到由于时间转换而切换到不同时区的元素?
样本数据:
ts <- structure(c(1521921600, 1521925200, 1521928800, 1521932400, 1521936000,
1521939600, 1521943200, 1521946800, 1521950400, 1521954000, 1521957600
), class = c("POSIXct", "POSIXt"))
输出:
"2018-03-24 21:00:00 CET" "2018-03-24 22:00:00 CET" "2018-03-24 23:00:00 CET" "2018-03-25 00:00:00 CET" "2018-03-25 01:00:00 CET" "2018-03-25 03:00:00 CEST" "2018-03-25 04:00:00 CEST" "2018-03-25 05:00:00 CEST" "2018-03-25 06:00:00 CEST" "2018-03-25 07:00:00 CEST" "2018-03-25 08:00:00 CEST"
前5个元素在CET中,然后切换到CEST。所以这里的答案是5或6.两个答案都没问题。
在样本数据中差异总是1小时,但我也需要不同的时间间隔,例如15或30分钟。
seq(min(ts), to = max(ts), by = 15*60)
seq(min(ts), to = max(ts), by = 30*60)
15分钟的预期答案是20/21。 30分钟的预期答案是10/11。
你可以使用lubridate
的dst
:
which(!duplicated(dst(ts)))[2]
这将为您提供时区更改为夏令时的点。