java - 如何检查当前工作日是否在给定的工作日范围之间?

标签 java logic

如何实现逻辑来验证当前工作日[周六]是否位于任何给定工作日范围[周日:周五]之间。

计划预期

输入:预计工作日范围

输出:当前工作日是否在给定范围内。

示例:

情况 1:考虑当前日期是 Sun 且给定范围 Sun:Sat

according to my implementation logic below will be accepted.

情况2:考虑当前日期是Sun并且给定范围Mon:Sun

now with current solution mon <= current_day(Sun) <= Sum, which is not fully satisfy.

有谁知道如何实现这个解决方案,我尝试在网上寻找解决方案,但发现没有任何值(value)。

我实现的逻辑:

// 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 ;

因此,如果结束日期值小于开始日期值,您可以通过添加 map 的大小来更改结束日期值,因为逻辑上它表示新一周的开始,使值变为 8,然后您还必须根据 map 的大小更改 currentDate,如果它的值小于开始日期值,这将通过 && 评估。

    if (scheduleEndDay < scheduleStartDay) {
    scheduleEndDay += DaysToNo.size();
}

if (currentDayInNo <  scheduleStartDay) {
    currentDayInNo += DaysToNo.size();
}

关于java - 如何检查当前工作日是否在给定的工作日范围之间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57452477/

相关文章:

java - 如何在 Android P 上使用 apache http

java - 延迟加载不适用于 eclipselink 中的 ManyToOne

javascript - JS 中的递归挑战将所有可能的数组键组合为 true |错误版本,我附上输入和输出

c# - 从可用纸张尺寸列表中获取最接近的纸张尺寸

java.lang.VerifyError - 将开发转移到另一台机器后,Android 应用程序未启动

实际发送字节的Java HttpUrlConnection状态

java - 从抽象类层次结构中获取正确的字段?

java - java计算两个日期之间的时间差,考虑营业时间、停工和周末

R within() 操作顺序和逻辑

java - 对数组中的元素执行算术运算 - android/java