润滑日期时间间隔行为 - 在间隔内查找单个日期

lubridate date-time interval behavior - finding single dates within intervals

运行 一些测试来弄清楚如何使用 intervallubridate 库 class 来解决问题。

有没有一种简单的方法来检查单个 date/time 是否在给定的时间间隔内?到目前为止,我所想到的就是将单个日期转换为一个间隔,在该间隔中,单个日期重复作为开始和结束时间,然后像这样测试它。只是想知道是否有更好的方法:

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% 但这也不适用于这种情况(除非我以某种方式使用错误)。尝试了此处给出的测试示例,但它 returns FALSE 即使答案是 TRUE:

interval(mdy_hms("5/20/2017 2:28:58"), mdy_hms("5/20/2017 2:28:58"))  
         %within% intTest

我认为只是

mdy_hms("5/20/2017 2:28:58", tz = "America/New_York") %within% intTest
#[1] TRUE

这在 ?"%within%" 帮助页面上进行了讨论,显示 a %within% b 其中

"a: An interval or date-time object"

确保在进行比较时也匹配您的时区。

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