JAVA & Open Framework2011. 8. 16. 09:52

사용 :

boolean isHoli = SchoolUtil.isHoliday(bse_yr+hday_month+StrUtil.lpad(ii+"",2,'0'));
if ( isHoli ) case_no = 1;

 

소스 :

 /**
  * 입력한 날짜가 공휴일인지 검사를 한다.
  */
 public static boolean isHoliday(String yyyymmdd) throws Exception {
  // 검사년도
  int yyyy = Integer.parseInt(yyyymmdd.substring( 0, 4 ));
  boolean isYun = DateUtil.isYunYear(yyyy);

  try {
   // 음력 공휴일을 양력으로 바꾸어서 입력
   String tmp01 = SchoolUtil.lunarTranse( yyyy + "0101", isYun);// 음력설날
   String tmp02 = SchoolUtil.lunarTranse( yyyy + "0815", isYun);// 음력추석
   String tmp03 = SchoolUtil.lunarTranse( yyyy + "0408", isYun);// 석가탄신일

   String[] holidays = {
     DateUtil.dateAdd('d',-1,tmp01,"yyyyMMdd"), // 음력설 첫째날
     tmp01,  // 음력설 둘째날
     DateUtil.dateAdd('d',1,tmp01,"yyyyMMdd"), // 음력설 셋째날
     DateUtil.dateAdd('d',-1,tmp02,"yyyyMMdd"), // 추석 첫째날
     tmp02,  // 추석 둘째날
     DateUtil.dateAdd('d',1,tmp02,"yyyyMMdd"), // 추석 셋째날
     tmp03,  // 석가탄신일
     // 양력 공휴일 입력
     yyyy + "0101",  // 양력설날
     yyyy + "0301",  // 삼일절
     yyyy + "0405",  // 식목일
     yyyy + "0505",  // 어린이날
     yyyy + "0606",  // 현충일
     yyyy + "0717",  // 제헌절
     yyyy + "0815",  // 광복절
     yyyy + "1003",  // 개천절
     yyyy + "1225",  // 성탄절
    };

   for ( int ii = 0 ; ii < holidays.length ; ++ii ) {
    if ( yyyymmdd.equals(holidays[ii])  ) {
     return true ;
    }
   }
        } catch(Exception ex) {
            throw ex;
        }
  return false;
 }

 

    /**
     * 음력을 약력으로
     *
     * @param       String    음력일('yyyyMMdd')
     * @param       boolean   윤달 여부
     * @return      String    처리결과 양력일 엔티티
     * @throws      java.lang.Exception
     */
    public static String lunarTranse(String TranseDay,boolean leapyes) throws Exception{
        int lyear = Integer.parseInt(TranseDay.substring(0,4));
        int lmonth = Integer.parseInt(TranseDay.substring(4,6));
        int lday = Integer.parseInt(TranseDay.substring(6,8));
       
        if(!leapyes && !verifyDate(lyear, lmonth, lday, "solar-"))
        {
            return "";
        }
        if(leapyes && !verifyDate(lyear, lmonth, lday, "solar+"))
        {
            return "";

        }
        int m1 = -1;
        long td = 0L;
        if(lyear != 1881)
        {
            m1 = lyear - 1882;
            for(int i = 0; i <= m1; i++)
            {
                for(int j = 0; j < 13; j++)
                    td = td + (long)KK[i * 13 + j];

                if(KK[i * 13 + 12] == 0)
                    td = td + 336L;
                else
                    td = td + 362L;
            }

        }
        m1++;
        int n2 = lmonth - 1;
        int m2 = -1;
        do
        {
            m2++;
            if(KK[m1 * 13 + m2] > 2)
            {
                td = td + 26L + (long)KK[m1 * 13 + m2];
                n2++;
                continue;
            }
            if(m2 == n2)
                break;
            td = td + 28L + (long)KK[m1 * 13 + m2];
        } while(true);
        if(leapyes)
            td = td + 28L + (long)KK[m1 * 13 + m2];
        td = td + (long)lday + 29L;
        m1 = 1880;
        do
        {
            m1++;
            boolean leap = m1 % 400 == 0 || m1 % 100 != 0 && m1 % 4 == 0;
            if(leap)
                m2 = 366;
            else
                m2 = 365;
            if(td < (long)m2)
                break;
            td = td - (long)m2;
        } while(true);
        int syear = m1;
        MDayCnt[1] = m2 - 337;
        m1 = 0;
        do
        {
            m1++;
            if(td <= (long)MDayCnt[m1 - 1])
                break;
            td = td - (long)MDayCnt[m1 - 1];
        } while(true);
        int smonth = m1;
        int sday = (int)td;
        long y = (long)syear - 1L;
        td = ((y * 365L + y / 4L) - y / 100L) + y / 400L;
        boolean leap = syear % 400 == 0 || syear % 100 != 0 && syear % 4 == 0;
        if(leap)
         MDayCnt[1] = 29;
        else
         MDayCnt[1] = 28;
        for(int i = 0; i < smonth - 1; i++)
            td = td + (long)MDayCnt[i];

        td = td + (long)sday;
        int i = (int)(td % 10L);
        i = (i + 4) % 10;
        int j = (int)(td % 12L);
        j = (j + 2) % 12;

        String sValue=String.valueOf(syear);

        if(smonth<10)
            sValue+="0";
         sValue+=String.valueOf(smonth);
         if(sday<10)
            sValue+="0";
         sValue+=String.valueOf(sday);

        return sValue;
    }

    private static boolean verifyDate(int k, int l, int l1, String s)
    {
        if(k < 1881 || k > 2043 || l < 1 || l > 12)
            return false;
        if(s.equals("lunar") && l1 > MDayCnt[l - 1])
            return false;
        if(s.equals("solar+"))
        {
            if(KK[(k - 1881) * 13 + 12] < 1)
                return false;
            if(KK[(k - 1881) * 13 + l] < 3)
                return false;
            if(KK[(k - 1881) * 13 + l] + 26 < l1)
                return false;
        }
        if(s.equals("solar-"))
        {
            int j = l - 1;
            for(int i = 1; i <= 12; i++)
                if(KK[((k - 1881) * 13 + i) - 1] > 2)
                    j++;

            if(l1 > KK[(k - 1881) * 13 + j] + 28)
                return false;
        }
        return true;
    }
   
    private static final int KK[] = {
        1, 2, 1, 2, 1, 2, 2, 3, 2, 2,
        1, 2, 1, 1, 2, 1, 2, 1, 2, 1,
        2, 2, 1, 2, 2, 0, 1, 1, 2, 1,
        1, 2, 1, 2, 2, 2, 1, 2, 0, 2,
        1, 1, 2, 1, 3, 2, 1, 2, 2, 1,
        2, 2, 2, 1, 1, 2, 1, 1, 2, 1,
        2, 1, 2, 2, 0, 2, 1, 2, 1, 2,
        1, 1, 2, 1, 2, 1, 2, 0, 2, 2,
        1, 2, 3, 2, 1, 1, 2, 1, 2, 1,
        2, 2, 1, 2, 2, 1, 2, 1, 1, 2,
        1, 2, 1, 0, 2, 1, 2, 2, 1, 2,
        1, 2, 1, 2, 1, 2, 0, 1, 2, 3,
        2, 1, 2, 2, 1, 2, 1, 2, 1, 2,
        1, 2, 1, 2, 1, 2, 1, 2, 2, 1,
        2, 2, 0, 1, 1, 2, 1, 1, 2, 3,
        2, 2, 1, 2, 2, 2, 1, 1, 2, 1,
        1, 2, 1, 2, 1, 2, 2, 2, 0, 1,
        2, 1, 2, 1, 1, 2, 1, 2, 1, 2,
        2, 0, 2, 1, 2, 1, 2, 3, 1, 2,
        1, 2, 1, 2, 1, 2, 2, 2, 1, 2,
        1, 1, 2, 1, 2, 1, 2, 0, 1, 2,
        2, 1, 2, 1, 2, 1, 2, 1, 2, 1,
        0, 2, 1, 2, 3, 2, 2, 1, 2, 1,
        2, 1, 2, 1, 2, 1, 2, 1, 2, 1,
        2, 2, 1, 2, 1, 2, 0, 1, 2, 1,
        1, 2, 1, 2, 2, 3, 2, 2, 1, 2,
        1, 2, 1, 1, 2, 1, 2, 1, 2, 2,
        2, 1, 0, 2, 1, 2, 1, 1, 2, 1,
        2, 1, 2, 2, 2, 0, 1, 2, 1, 2,
        1, 3, 2, 1, 1, 2, 2, 1, 2, 2,
        2, 1, 2, 1, 1, 2, 1, 1, 2, 2,
        1, 0, 2, 2, 1, 2, 2, 1, 1, 2,
        1, 2, 1, 2, 0, 1, 2, 2, 1, 4,
        1, 2, 1, 2, 1, 2, 1, 2, 1, 2,
        1, 2, 1, 2, 2, 1, 2, 1, 2, 1,
        0, 2, 1, 1, 2, 2, 1, 2, 1, 2,
        2, 1, 2, 0, 1, 2, 3, 1, 2, 1,
        2, 1, 2, 2, 2, 1, 2, 1, 2, 1,
        1, 2, 1, 2, 1, 2, 2, 2, 1, 0,
        2, 1, 2, 1, 1, 2, 3, 1, 2, 2,
        1, 2, 2, 2, 1, 2, 1, 1, 2, 1,
        1, 2, 2, 1, 2, 0, 2, 2, 1, 2,
        1, 1, 2, 1, 1, 2, 1, 2, 0, 2,
        2, 1, 2, 2, 3, 1, 2, 1, 2, 1,
        1, 2, 2, 1, 2, 2, 1, 2, 1, 2,
        1, 2, 1, 2, 0, 1, 2, 1, 2, 1,
        2, 2, 1, 2, 1, 2, 1, 0, 2, 1,
        3, 2, 1, 2, 2, 1, 2, 2, 1, 2,
        1, 2, 1, 1, 2, 1, 2, 1, 2, 2,
        2, 1, 2, 0, 1, 2, 1, 1, 2, 1,
        2, 3, 2, 2, 1, 2, 2, 1, 2, 1,
        1, 2, 1, 1, 2, 2, 1, 2, 2, 0,
        2, 1, 2, 1, 1, 2, 1, 1, 2, 1,
        2, 2, 0, 2, 1, 2, 2, 1, 3, 2,
        1, 1, 2, 1, 2, 2, 1, 2, 2, 1,
        2, 1, 2, 1, 2, 1, 1, 2, 0, 2,
        1, 2, 1, 2, 2, 1, 2, 1, 2, 1,
        1, 0, 2, 1, 2, 2, 3, 2, 1, 2,
        2, 1, 2, 1, 2, 1, 1, 2, 1, 2,
        1, 2, 2, 1, 2, 2, 1, 0, 2, 1,
        1, 2, 1, 2, 1, 2, 2, 1, 2, 2,
        0, 1, 2, 3, 1, 2, 1, 1, 2, 2,
        1, 2, 2, 2, 1, 2, 1, 1, 2, 1,
        1, 2, 1, 2, 2, 2, 0, 1, 2, 2,
        1, 1, 2, 3, 1, 2, 1, 2, 2, 1,
        2, 2, 2, 1, 1, 2, 1, 1, 2, 1,
        2, 1, 0, 2, 2, 2, 1, 2, 1, 2,
        1, 1, 2, 1, 2, 0, 1, 2, 2, 1,
        2, 4, 1, 2, 1, 2, 1, 1, 2, 1,
        2, 1, 2, 2, 1, 2, 2, 1, 2, 1,
        2, 0, 1, 1, 2, 1, 2, 1, 2, 2,
        1, 2, 2, 1, 0, 2, 1, 1, 4, 1,
        2, 1, 2, 1, 2, 2, 2, 1, 2, 1,
        1, 2, 1, 1, 2, 1, 2, 2, 2, 1,
        0, 2, 2, 1, 1, 2, 1, 1, 4, 1,
        2, 2, 1, 2, 2, 2, 1, 1, 2, 1,
        1, 2, 1, 2, 1, 2, 0, 2, 2, 1,
        2, 1, 2, 1, 1, 2, 1, 2, 1, 0,
        2, 2, 1, 2, 2, 1, 4, 1, 1, 2,
        1, 2, 1, 2, 1, 2, 2, 1, 2, 2,
        1, 2, 1, 1, 2, 0, 1, 2, 1, 2,
        1, 2, 2, 1, 2, 2, 1, 2, 0, 1,
        1, 2, 1, 4, 1, 2, 1, 2, 2, 1,
        2, 2, 1, 1, 2, 1, 1, 2, 1, 2,
        2, 2, 1, 2, 0, 2, 1, 1, 2, 1,
        1, 2, 1, 2, 2, 1, 2, 0, 2, 2,
        3, 1, 2, 1, 1, 2, 1, 2, 1, 2,
        2, 2, 1, 2, 1, 2, 1, 1, 2, 1,
        2, 1, 2, 0, 2, 2, 1, 2, 1, 2,
        1, 3, 2, 1, 2, 1, 2, 2, 1, 2,
        2, 1, 2, 1, 1, 2, 1, 2, 1, 0,
        2, 1, 2, 2, 1, 2, 1, 2, 1, 2,
        1, 2, 0, 1, 2, 1, 2, 1, 4, 2,
        1, 2, 1, 2, 1, 2, 1, 2, 1, 1,
        2, 2, 1, 2, 2, 1, 2, 2, 0, 1,
        1, 2, 1, 1, 2, 1, 2, 2, 1, 2,
        2, 0, 2, 1, 1, 4, 1, 1, 2, 1,
        2, 1, 2, 2, 2, 1, 2, 1, 2, 1,
        1, 2, 1, 2, 1, 2, 2, 0, 2, 1,
        2, 1, 2, 1, 1, 2, 3, 2, 1, 2,
        2, 1, 2, 2, 1, 2, 1, 1, 2, 1,
        2, 1, 2, 0, 1, 2, 2, 1, 2, 1,
        2, 1, 2, 1, 2, 1, 0, 2, 1, 2,
        1, 2, 2, 3, 2, 1, 2, 1, 2, 1,
        2, 1, 2, 1, 2, 1, 2, 2, 1, 2,
        1, 2, 0, 1, 2, 1, 1, 2, 1, 2,
        2, 1, 2, 2, 1, 0, 2, 1, 2, 1,
        3, 2, 1, 2, 1, 2, 2, 2, 1, 2,
        1, 2, 1, 1, 2, 1, 2, 1, 2, 2,
        2, 0, 1, 2, 1, 2, 1, 1, 2, 1,
        1, 2, 2, 1, 0, 2, 2, 2, 3, 2,
        1, 1, 2, 1, 1, 2, 2, 1, 2, 2,
        1, 2, 2, 1, 1, 2, 1, 2, 1, 2,
        0, 1, 2, 2, 1, 2, 1, 2, 3, 2,
        1, 2, 1, 2, 1, 2, 1, 2, 1, 2,
        2, 1, 2, 1, 2, 1, 0, 2, 1, 1,
        2, 2, 1, 2, 1, 2, 2, 1, 2, 0,
        1, 2, 1, 1, 2, 3, 2, 1, 2, 2,
        2, 1, 2, 1, 2, 1, 1, 2, 1, 2,
        1, 2, 2, 2, 1, 0, 2, 1, 2, 1,
        1, 2, 1, 1, 2, 2, 2, 1, 0, 2,
        2, 1, 2, 3, 1, 2, 1, 1, 2, 2,
        1, 2, 2, 2, 1, 2, 1, 1, 2, 1,
        1, 2, 1, 2, 0, 2, 2, 1, 2, 1,
        2, 1, 2, 3, 2, 1, 1, 2, 2, 1,
        2, 2, 1, 2, 1, 2, 1, 2, 1, 1,
        0, 2, 2, 1, 2, 1, 2, 2, 1, 2,
        1, 2, 1, 0, 2, 1, 1, 2, 1, 2,
        4, 1, 2, 2, 1, 2, 1, 2, 1, 1,
        2, 1, 2, 1, 2, 2, 1, 2, 2, 0,
        1, 2, 1, 1, 2, 1, 1, 2, 2, 1,
        2, 2, 0, 2, 1, 2, 1, 3, 2, 1,
        1, 2, 2, 1, 2, 2, 2, 1, 2, 1,
        1, 2, 1, 1, 2, 1, 2, 2, 0, 2,
        1, 2, 2, 1, 1, 2, 1, 1, 2, 3,
        2, 2, 1, 2, 2, 1, 2, 1, 2, 1,
        1, 2, 1, 2, 0, 1, 2, 2, 1, 2,
        2, 1, 2, 1, 2, 1, 1, 0, 2, 1,
        2, 2, 1, 2, 3, 2, 2, 1, 2, 1,
        2, 1, 1, 2, 1, 2, 1, 2, 2, 1,
        2, 2, 1, 0, 2, 1, 1, 2, 1, 2,
        1, 2, 2, 1, 2, 2, 0, 1, 2, 1,
        1, 2, 3, 1, 2, 1, 2, 2, 2, 2,
        1, 2, 1, 1, 2, 1, 1, 2, 1, 2,
        2, 2, 0, 1, 2, 2, 1, 1, 2, 1,
        1, 2, 1, 2, 2, 0, 1, 2, 2, 3,
        2, 1, 2, 1, 1, 2, 1, 2, 1, 2,
        2, 2, 1, 2, 1, 2, 1, 1, 2, 1,
        2, 0, 1, 2, 2, 1, 2, 2, 1, 2,
        3, 2, 1, 1, 2, 1, 2, 1, 2, 2,
        1, 2, 1, 2, 2, 1, 2, 0, 1, 1,
        2, 1, 2, 1, 2, 2, 1, 2, 2, 1,
        0, 2, 1, 1, 2, 1, 3, 2, 2, 1,
        2, 2, 2, 1, 2, 1, 1, 2, 1, 1,
        2, 1, 2, 2, 2, 1, 0, 2, 2, 1,
        1, 2, 1, 1, 2, 1, 2, 2, 1, 0,
        2, 2, 2, 1, 3, 2, 1, 1, 2, 1,
        2, 1, 2, 2, 2, 1, 2, 1, 2, 1,
        1, 2, 1, 2, 1, 0, 2, 2, 1, 2,
        2, 1, 2, 1, 1, 2, 1, 2, 0, 1,
        2, 3, 2, 2, 1, 2, 1, 2, 2, 1,
        1, 2, 1, 2, 1, 2, 1, 2, 2, 1,
        2, 2, 1, 2, 0, 1, 1, 2, 1, 2,
        1, 2, 3, 2, 2, 1, 2, 2, 1, 1,
        2, 1, 1, 2, 1, 2, 2, 2, 1, 2,
        0, 2, 1, 1, 2, 1, 1, 2, 1, 2,
        2, 1, 2, 0, 2, 2, 1, 1, 2, 3,
        1, 2, 1, 2, 1, 2, 2, 2, 1, 2,
        1, 2, 1, 1, 2, 1, 2, 1, 2, 0,
        2, 1, 2, 2, 1, 2, 1, 1, 2, 1,
        2, 1, 0, 2, 1, 2, 4, 2, 1, 2,
        1, 1, 2, 1, 2, 1, 2, 1, 2, 2,
        1, 2, 1, 2, 1, 2, 1, 2, 0, 1,
        2, 1, 2, 1, 2, 1, 2, 2, 3, 2,
        1, 2, 1, 2, 1, 1, 2, 1, 2, 2,
        2, 1, 2, 2, 0, 1, 1, 2, 1, 1,
        2, 1, 2, 2, 1, 2, 2, 0, 2, 1,
        1, 2, 1, 3, 2, 1, 2, 1, 2, 2,
        2, 1, 2, 1, 2, 1, 1, 2, 1, 2,
        1, 2, 2, 0, 2, 1, 2, 1, 2, 1,
        1, 2, 1, 2, 1, 2, 0, 2, 1, 2,
        2, 3, 2, 1, 1, 2, 1, 2, 1, 2,
        1, 2, 2, 1, 2, 1, 2, 1, 2, 1,
        2, 1, 0, 2, 1, 2, 1, 2, 2, 1,
        2, 1, 2, 1, 2, 0, 1, 2, 3, 2,
        1, 2, 1, 2, 2, 1, 2, 1, 2, 1,
        2, 1, 1, 2, 1, 2, 2, 1, 2, 2,
        1, 0, 2, 1, 2, 1, 1, 2, 3, 2,
        1, 2, 2, 2, 1, 2, 1, 2, 1, 1,
        2, 1, 2, 1, 2, 2, 2, 0, 1, 2,
        1, 2, 1, 1, 2, 1, 1, 2, 2, 2,
        0, 1, 2, 2, 1, 2, 3, 1, 2, 1,
        1, 2, 2, 1, 2, 2, 1, 2, 2, 1,
        1, 2, 1, 1, 2, 2, 0, 1, 2, 1,
        2, 2, 1, 2, 1, 2, 1, 2, 1, 0,
        2, 1, 2, 3, 2, 1, 2, 2, 1, 2,
        1, 2, 1, 2, 1, 1, 2, 1, 2, 2,
        1, 2, 2, 1, 2, 0, 1, 2, 1, 1,
        2, 1, 2, 3, 2, 2, 2, 1, 2, 1,
        2, 1, 1, 2, 1, 2, 1, 2, 2, 2,
        1, 0, 2, 1, 2, 1, 1, 2, 1, 1,
        2, 2, 1, 2, 0, 2, 2, 1, 2, 1,
        1, 4, 1, 1, 2, 1, 2, 2, 2, 2,
        1, 2, 1, 1, 2, 1, 1, 2, 1, 2,
        0, 2, 2, 1, 2, 1, 2, 1, 2, 1,
        1, 2, 1, 0, 2, 2, 1, 2, 2, 3,
        2, 1, 2, 1, 2, 1, 1, 2, 1, 2,
        2, 1, 2, 2, 1, 2, 1, 2, 1, 0,
        2, 1, 1, 2, 1, 2, 2, 1, 2, 2,
        1, 2, 0, 1, 2, 3, 1, 2, 1, 2,
        1, 2, 2, 2, 1, 2, 1, 2, 1, 1,
        2, 1, 1, 2, 2, 1, 2, 2, 0
    };
 private static final int MDayCnt[] = {31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};


출처 : http://blog.daum.net/canel777/98
Posted by 아로나