깜놀하는 해므찌로

Java Calendar 자바 달력형 데이터 날짜 더하기 빼기 함수 예시 본문

IT

Java Calendar 자바 달력형 데이터 날짜 더하기 빼기 함수 예시

agnusdei1207 2022. 8. 27. 07:29
반응형
SMALL
@RequestMapping(folderPath + "midArea.do")             
public String midArea(@ModelAttribute("searchVO") CmmnDefaultVO searchVO, ModelMap model, HttpServletRequest request) throws Exception {
		
    /* 배열 셋팅 */
    Et01VO[] arrEt01VO = null;      
    Ot01VO[] arrOt01VO = null; 

    /* 조회  VO */
    Et01VO eatTotal = new Et01VO();  
    Ot01VO overTimeTotal = new Ot01VO();     

    /* 날짜 포멧 */
    String searchStartDate = searchVO.getSearchStartDate();
    String searchEndDate = searchVO.getSearchEndDate(); 

    /* 포멧 형식 : 문자열 -> 데이트형 */
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy.MM.dd"); 
    /* 포멧 형식 : 데이트형 -> 캘린더형 */
    DateFormat dateFormat = new SimpleDateFormat("yyyy.MM.dd");

    /* 포멧  */ 
    Date startDate = (Date) formatter.parse(searchStartDate); 
    Date endDate = (Date) formatter.parse(searchEndDate); 

    /* 두 날 차이 계산 (일 기준) */
    int length = (int)Math.abs((endDate.getTime() - startDate.getTime())/(1000 * 60 * 60 * 24));

    /* 날짜 차이 만큼 배열 길이 셋팅 */   
    arrEt01VO = new Et01VO[length];   
    arrOt01VO = new Ot01VO[length];        

    /* 달력  */    
    Calendar cal = Calendar.getInstance();


    /* 두 날 차이가 30일 초과 시  셋팅*/  
    if(length > 31){  
        cal.setTime(endDate);
        cal.add(Calendar.DATE, -30);  
    }else{   
        /* 두 날 차이가 30일 이하 시 달력 날짜 셋팅 */    
        cal.setTime(startDate);
    }

    /* 전체 월 셋팅  */          
    for(int i = 1, cnt = 0; i <= length; i++, cnt++){ 

        /* 달력 일 +1 */ 
        if(i != 1){
            cal.add(Calendar.DATE, 1);
        } 

        /* 캘린더형 -> 데이트형 -> 문자열 형변환 */
        String tempDate = dateFormat.format(cal.getTime());   

        /* DB 조회 전 날짜 값 셋팅 */
        searchVO.setSchEtc01(tempDate);  

        /* tempVO */    
        Et01VO et01VO = new Et01VO(); 
        Ot01VO ot01VO = new Ot01VO(); 

        /* DB 조회 및 결과  담기*/          
        arrEt01VO[cnt] = (Et01VO)cmmnService.selectContents(searchVO, PROGRAM_ID + ".Qeury" ); 
        if(null == arrEt01VO[cnt]){ // 조회 결과가 null 일 경우 날짜 값 셋팅
            et01VO.setEatDate(searchVO.getSchEtc01());
            arrEt01VO[cnt] = et01VO;  
        }  
        arrOt01VO[cnt] = (Ot01VO)cmmnService.selectContents(searchVO, PROGRAM_ID + ".Qeury"); 
        if(null == arrOt01VO[cnt]){ // 조회 결과가 null 일 경우 날짜 값 셋팅
            ot01VO.setApplyDate(searchVO.getSchEtc01());  
            arrOt01VO[cnt] = ot01VO;
        }       
    } // for   

    /* 식대 총계 */            
    eatTotal = (Et01VO)cmmnService.selectContents(searchVO, PROGRAM_ID + ".Qeury"); 
    /* 초과근무 총계 */ 
    overTimeTotal = (Ot01VO)cmmnService.selectContents(searchVO, PROGRAM_ID + ".Qeury"); 

    model.addAttribute("eatTotal", eatTotal);   
    model.addAttribute("overTimeTotal", overTimeTotal);
    model.addAttribute("arrEt01VO", arrEt01VO);
    model.addAttribute("arrOt01VO", arrOt01VO); 

    return  folderPath + "midArea";       
}

1. JSP 로부터 넘겨받은 날짜 값 예시: "2022.08.15" 문자열 -> 달력형 형변환 

2. 두 개의 날짜 시작, 종료일을 각각 입력 받아 두 날짜의 차이를 계산 (일 기준)

3. 일 기준 더하기 빼기 연산 

4. 연산 완료 후 다시 문자열로 형변환

5. DB 조회 시 조건절로 활용

반응형
LIST