JAvaはn日後の平日を取得し、祝日を考慮しない

1141 ワード

ネット上の関連コードを見たことがありますが、構想の多くは週末を排除するために反復日付で、効率はあまり高くなく、自分で書きました.参照のみ
/**
     *   n       
     * @param today
     * @param afterDays
     * @return
     */
    public static Date getAfterWorkDay(Date today, Integer afterDays){
        if (today == null) {
            throw new BussinessException("        ");
        }
        if (afterDays == null) {
            throw new BussinessException("      ");
        }
        Integer workAfterDays = afterDays;

        /**
         *         
         */
        Integer cycle = 7;
        Integer i = afterDays / cycle;
        workAfterDays += i * 2;

        Calendar c = Calendar.getInstance();
        c.setTime(today);
        c.add(Calendar.DAY_OF_MONTH, workAfterDays);
        c.set(Calendar.HOUR, 0);
        c.set(Calendar.MINUTE, 0);
        c.set(Calendar.SECOND, 0);

        if(c.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY){
            c.add(Calendar.DAY_OF_MONTH, 2);
        } else if(c.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY){
            c.add(Calendar.DAY_OF_MONTH, 1);
        }
        return c.getTime();
    }