android 检查LocalDateTime是否在工作时间之间

szqfcxe2  于 2023-01-07  发布在  Android
关注(0)|答案(1)|浏览(142)

我想知道比较值以检查当前日期是否在值的范围内的更有效的方法是什么。
我希望仅在周一至周五以及8:00至18:00(上午8点至下午6点)触发本地通知
首先我写的是:

val current = LocalDateTime.now()
val day = current.dayOfWeek.value
val hour = current.hour

if(day != 6 && day != 7 && hour > 7 && hour < 18) 
   {...}

但Android Studio建议使用hour in 8..17
那么我应该用day != 6 && day != 7 && hour > 7 && hour < 18还是day != 6 && day != 7 && hour in 8..17,还是day in 1..5 && hour in 8..17,还是别的什么?
你觉得呢?

dgenwo3n

dgenwo3n1#

在你做这件事的许多方法中,你不会发现任何一种方法是“更有效的”(除非你做了数百万次评估)。
我同意@Tenfour04的观点,更重要的是可读性--这样你/其他人就可以推断代码是正确的。也可以考虑使用命名常量表示一周中的几天(DayOfWeek.MONDAY),你仍然可以在范围内使用这些常量。

val current = LocalDateTime.now()
val isInWorkingHours = current.hour in 8..17
val isWorkingDay = current.dayOfWeek in DayOfWeek.MONDAY..DayOfWeek.FRIDAY
if(isInWorkingHours && isWorkingDay) {
    //
}

使用IntelliJ这样的IDE,您可以获得提示,以便轻松理解..范围语法,您可以获得:

相关问题