java - 如何检查一天是否位于范围之间?

标签 java algorithm math calendar dayofweek

我有一份工作,从给定的一天到一周的某一天。例如(周一至周六)。 当 stopday > starday for eg-startday->Monday stopDay->Saturday 时,我能够涵盖这种情况 但是当范围变为 Wednesday to Monday 之类的东西时,我无法涵盖这种情况。

private boolean isNotWindow(DateTime todayDate) {
        final int hr = 3600;
        final int min = 60;
        int stopDay =
                Integer.parseInt(ShipmentTrackingEmailProperties.getInstance().getProperty(
                        ShipmentTrackingEmailProperties.SHIPMENT_EMAIL_STOP_DAY));
        int startDay =
                Integer.parseInt(ShipmentTrackingEmailProperties.getInstance().getProperty(
                        ShipmentTrackingEmailProperties.SHIPMENT_EMAIL_START_DAY));

        if(stopDay<startDay)
        {
            //Not able to figure out??????
        }
        if (todayDate.getDayOfWeek() >= stopDay) {
            String stopTime =
                    ShipmentTrackingEmailProperties.getInstance().getProperty(ShipmentTrackingEmailProperties.SHIPMENT_EMAIL_STOP_TIME);
            String[] array = stopTime.split(":");
            System.out.println(array[0] + "  " + array[1] + "   " + array[2]);
            int hh = Integer.parseInt(array[0]);
            int mm = Integer.parseInt(array[1]);
            int ss = Integer.parseInt(array[2]);
            int tSec = todayDate.getHourOfDay() * hr + todayDate.getMinuteOfDay() * min + todayDate.getSecondOfDay();
            int sSec = hh * hr + mm * min + ss;
            if (tSec > sSec) {
                     return true;
            }
        }
        if (todayDate.getDayOfWeek() <= startDay) {
            String startTime =
                    ShipmentTrackingEmailProperties.getInstance().getProperty(ShipmentTrackingEmailProperties.SHIPMENT_EMAIL_START_TIME);
            String[] array = startTime.split(":");
            int hh = Integer.parseInt(array[0]);
            int mm = Integer.parseInt(array[1]);
            int ss = Integer.parseInt(array[2]);
            int tSec = todayDate.getHourOfDay() * hr + todayDate.getMinuteOfDay() * min + todayDate.getSecondOfDay();
            int sSec = hh * hr + mm * min + ss;
            if (tSec <= sSec) {
                LOG.info("Not a valid day to send mail ." + todayDate.getDayOfWeek());
                 return true;
            }
        }
             LOG.info("Valid day to send mail ." + todayDate.getDayOfWeek());
         return false;
    }

如果日期不在一个范围内,这个函数返回true。那么如何覆盖
停止日<开始日

最佳答案

你需要:

if startday<stopday then
    if the day is in the interval (startday,stopday) then OK
    else NotOk
else 
    if the day is not in the interval (startday,stopday) then OK
    else NotOk

它可以更容易地完成:

If((day-startday)*(stopday-day)*(stopday-startday)>=0) then OK
else NotOk

关于java - 如何检查一天是否位于范围之间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21621735/

相关文章:

Ruby:字符串重建算法,只能部分工作

c - 斐波那契搜索

x 唯一字符的 Python 排列每次重复 y 次

c++ - 拖动 3D 控制杆(基于方向和视角)

java - 通过 java 将 UTF8 字符串传递到 .NET Web 服务

java - 我可以在同一个服务中使用两个存储库吗?

java - 为什么 Jsoup 无法连接某些 URL?

arrays - 找出数组中满足 i<j 和 a[i]>a[j] 的 (i,j) 对的总数

algorithm - 最快的整数分解算法是什么?

java - 如何将变量传递给按钮 clickListener 事件中的方法?