运行一些测试以弄清楚如何使用lubridate
的{{1}}库类来解决问题。
是否有一种简单的方法可以检查单个日期/时间是否在给定的时间间隔内?到目前为止,我所提出的只是将单个日期转换为重复单个日期作为开始和结束时间的间隔,然后像这样进行测试。只是想知道是否有更好的方法:
interval
也尝试使用library(lubridate)
intTest <- mdy_hms("5/20/2017 2:28:57",
tz = "America/New_York") %--% mdy_hms("5/20/2017 2:28:59",
tz = "America/New_York")
int_overlaps(interval(mdy_hms("5/20/2017 2:28:58",
tz = "America/New_York"), mdy_hms("5/20/2017 2:28:58")), intTest)
,但这对于这种情况也不起作用(除非我以某种方式使用它)。尝试了这里给出的测试示例,但它返回%within%
,即使答案是FALSE
:
TRUE
答案 0 :(得分:1)
我认为这只是
mdy_hms("5/20/2017 2:28:58", tz = "America/New_York") %within% intTest
#[1] TRUE
这在?"%within%"
帮助页面上进行了讨论,其中显示了a %within% b
其中
“a:间隔或日期时间对象”
在进行比较时,请确保您的时区也匹配。
intTest
#[1] 2017-05-20 02:28:57 EDT--2017-05-20 02:28:59 EDT
myint <- interval(
mdy_hms("5/20/2017 2:28:58", tz="America/New_York"),
mdy_hms("5/20/2017 2:28:58", tz="America/New_York")
)
myint
#[1] 2017-05-20 02:28:58 EDT--2017-05-20 02:28:58 EDT
myint %within% intTest
#[1] TRUE
myintUTC <- interval(
mdy_hms("5/20/2017 2:28:58"),
mdy_hms("5/20/2017 2:28:58")
)
myintUTC
#[1] 2017-05-20 02:28:58 UTC--2017-05-20 02:28:58 UTC
myintUTC %within% intTest
#[1] FALSE