JAVA

일자계산휴일

Stater 2025. 5. 27. 07:25
private String getValidLastDay(SimpleDateFormat df, String baseDate) throws Exception {
    Calendar cal = Calendar.getInstance();
    cal.setTime(df.parse(baseDate));
    // 말일 세팅
    cal.set(Calendar.DATE, cal.getActualMaximum(Calendar.DAY_OF_MONTH));

    // 휴일체크
    int holidayCheck = selectHolidayCheck(df.format(cal.getTime()));
    if (holidayCheck == 1) {
        // 휴일이면 -1달 이동 후 다시 말일 세팅
        cal.add(Calendar.MONTH, -1);
        cal.set(Calendar.DATE, cal.getActualMaximum(Calendar.DAY_OF_MONTH));

        // 또 휴일이면 한번 더 (필요하면 이 부분을 더 확장 가능)
        int secondHolidayCheck = selectHolidayCheck(df.format(cal.getTime()));
        if (secondHolidayCheck == 1) {
            cal.add(Calendar.MONTH, -1);
            cal.set(Calendar.DATE, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
        }
    }
    return df.format(cal.getTime());
}


} else if(selectHolidayValue.equals("28") || selectHolidayValue.equals("29") ||
          selectHolidayValue.equals("30") || selectHolidayValue.equals("31")) {
    
    LOGGER.debug(selectHolidayValue);
    
    try {
        // 조회한 달
        endDate = paramMap.getString("endDate");
        
        SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
        Calendar cal = Calendar.getInstance();

        // 조회한 전달
        cal.setTime(df.parse(endDate));
        cal.add(Calendar.MONTH, -1);
        endDate2 = getValidLastDay(df, df.format(cal.getTime()));

        // 조회한 전전달
        cal.add(Calendar.MONTH, -1);
        endDate3 = getValidLastDay(df, df.format(cal.getTime()));

        // 값 설정
        nowMonth = endDate;
        onePreMonth = endDate2;
        twoPreMonth = endDate3;

        // 리스트에 추가
        endDatelist.add(nowMonth);
        endDatelist.add(onePreMonth);
        endDatelist.add(twoPreMonth);

        for (String date : endDatelist) {
            endDateInputList.add(date);
        }

        LOGGER.debug("DateInputList:]" + endDateInputList);

        paramMap.put("depositDateNewCategory", endDateInputList);
        paramMap.put("taxDateType", taxDateType);
        paramMap.put("depositType1", depositType1);

    } catch (Exception e) {
        LOGGER.debug("[)-]:" + e.getMessage());
    }
}
반응형

'JAVA' 카테고리의 다른 글

csv db비교  (0) 2025.08.28
페이징 처리 내용 2  (0) 2024.06.16
페이징 처리 내용  (0) 2024.06.16
Chpter01. 변수  (0) 2023.03.07
Chapter01. 변수  (0) 2023.02.23