我正在这里寻找一种使用lubridate(类似的东西)的,可能不太hacky的解决方案。
用例:我想检查Sys.time()
是否在给定的小时间隔之间,结果比我认为b / ca datetime
似乎总是复杂一些需要一个日期,例如paste("01-01-01", "9:00 AM")
所以这是我检查Sys.time()
是否在工作时间之间所做的工作。我正在提取小时数的数值并进行比较,这对我来说似乎很不客气:)
as.numeric(format(lubridate::as_datetime(Sys.time(), tz = "America/New_York"), format = "%H")) >= as.numeric(format(ymd_hm(paste("01-01-01", "9:00 AM"), tz = "America/New_York"), format = "%H")) &
as.numeric(format(lubridate::as_datetime(Sys.time(), tz = "America/New_York"), format = "%H")) < as.numeric(format(ymd_hm(paste("01-01-01", "6:00 PM"), tz = "America/New_York"), format = "%H"))
这有效并根据设置的参数返回TRUE
或FALSE
。再次,我正在寻找一种针对这种怪异现象的更优雅的解决方案,或者这可能会帮助正在寻找这种怪物的人。
欢迎任何反馈!
您可以使用hour
。 LHS和RHS上的相同tz=
互相抵消。
hour(Sys.time()) %in% 9:18
# [1] FALSE