사용 :
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
'JAVA & Open Framework' 카테고리의 다른 글
[펌] java Oracle connection (0) | 2011.12.19 |
---|---|
JAVA(DateTimeUtil.java) - 요일 체크 및 기타 요일관련 Class (0) | 2011.08.18 |
Java class 의 JDK 버전 확인 방법 (1) | 2011.06.09 |
이클립스1개에 여러개의 JDK를 버젼별로 설정하기 (0) | 2011.06.07 |
PreparedStatement Query (0) | 2011.05.27 |