如何实现逻辑来验证当前工作日 [星期六] 介于任何给定工作日范围 [星期日:星期五] 之间。
输入:预计工作日范围
输出:当前工作日是否介于给定范围之间。
例子:
根据我下面的实现逻辑将被接受。
现在使用当前的解决方案 mon <= current_day(Sun) <= Sum,这是不完全满足的。
有没有人知道如何实施这个解决方案,我尝试在网上找到解决方案,但我发现没有任何价值。
我实现的逻辑:
// CURRENT DAY CALCULATION
Calendar currDate = Calendar.getInstance();
int currentDayInNo = currDate.get(Calendar.DAY_OF_WEEK);
// BIMAP FOR MAPPING OF DAYS NUMBER AND DAYS
static final ImmutableBiMap<String, Integer> DaysToNo =
new ImmutableBiMap.Builder<String, Integer>()
.put("Sun", 1)
.put("Mon", 2)
.put("Tue", 3)
.put("Wed", 4)
.put("Thu", 5)
.put("Fri", 6)
.put("Sat", 7)
.build();
if (currentDayInNo >= DaysToNo.get(scheduleStartDay) && currentDayInNo <= DaysToNo.get(scheduleEndDay)) {
logger.info("First acceptance criteria meet: " + "Today's day : " + LocalDate.now().getDayOfWeek()+ " is come between " + scheduleStartDay + " and " + scheduleEndDay);
} else {
logger.info("First acceptance criteria not meet: " + "Today's day : "+ LocalDate.now().getDayOfWeek() + " is not come between " + scheduleStartDay + " and "+ scheduleEndDay);
}
想了解更多关于您的预期输出应该是什么的详细信息,您是否只是检查这一天是否在几天之内,假设我们正在检查星期四是否在星期二和星期五之间,或者您想检查它是否在一个范围内每月的特定周。
我相信错误来自您尝试过的比较,这是它现在的工作原理,假设当天是星期日,整数为 1,并且您正在比较星期一的开始日期,整数为 2 直到星期日,即 1。您将按降序排列,
所以 if 在 && 的第一次评估中失败,其中 1 不是 >= 2 ;
因此,如果结束日值小于开始日值,您可以通过添加地图的大小来更改结束日值,因为逻辑上它表示新一周的开始,使值 8,那么您将有用地图的大小更改 currentDate 如果它的值小于开始日期的值,这将通过 && 评估。
if (scheduleEndDay < scheduleStartDay) {
scheduleEndDay += DaysToNo.size();
}
if (currentDayInNo < scheduleStartDay) {
currentDayInNo += DaysToNo.size();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句