Интервалы состоят из start
: дата начала, .Data
: секунды длительности интервала и tzone
: часовой пояс.
Если вы считаете, что tzone
стабильно, вы тольконеобходимо восстановить дату начала двух интервалов, которые вы хотите сравнить, и проверить, что один начинается после второго и заканчивается до второго.
Пример:
isIncluded <- function(a,b){
(a[[1]]@start>=b[[1]]@start & (a[[1]]@start+seconds(a[[1]]@.Data))<=(b[[1]]@start+seconds(b[[1]]@.Data)))
}
library(lubridate)
date1<-ymd_hms("2000-01-01 05:30:00",tz = "US/Eastern")
date2<- ymd_hms("2000-01-01 00:00:00",tz = "US/Eastern")
cols <- lapply(0:14, function(x){
mapply(function(y,z){
interval((date1+days(x)+minutes(y)), (date1+days(x)+minutes(y+z)))
}, y = c(0,150,420,600,720,840,1080), z = c(600,570,600,600,600,600,600), SIMPLIFY = FALSE)
})
rows <- lapply(0:14, function(x){
mapply(function(y,z){
interval((date2+days(x)+minutes(y)), (date2+days(x)+minutes(y+z)))
}, y = seq(0,1380,60), rep(c(60),24), SIMPLIFY = FALSE)
})
x <- cols[[1]][1]
y <- cols[[1]][2]
isIncluded(x,y) ## Is included x in y? False
isIncluded(x,x) ## Is included x in x? True
The rest is just populating the matrix!
Best!