투케이2K

240. (java/자바) Date 사용해 두 날짜 차이 계산 실시 - 초(sec), 분(min), 시간(hour), 날짜(day) 본문

Java

240. (java/자바) Date 사용해 두 날짜 차이 계산 실시 - 초(sec), 분(min), 시간(hour), 날짜(day)

투케이2K 2022. 2. 10. 19:09
반응형

[개발 환경 설정]

개발 툴 : Eclipse

개발 언어 : Java

 

[소스 코드]

    public static int getDateMinus(String bigDate, String smallDate) {

        /**
         * TODO [설 명]
         * 1. 날짜 형식 : yyyyMMddkkmmss 24시간 형태로 구성
         * 2. bigDate 큰 날짜 - smallDate 작은 날짜 연산 수행
         * 3. 리턴 형식 : 초 , 분 , 시간 , 일자 단위 선택
         * 4. 인풋 예시 :
         *    - C_Util.getDateMinus("2022 02 10 18 30 15", "2022 02 10 18 30 15"); // 동일
         *
         *    - C_Util.getDateMinus("2022 02 10 18 30 15", "2022 02 10 18 30 10"); // 초 [다름]
         *    - C_Util.getDateMinus("2022 02 10 18 30 15", "2022 02 10 18 25 15"); // 분 [다름]
         *    - C_Util.getDateMinus("2022 02 10 18 30 15", "2022 02 10 17 30 15"); // 시간 [다름]
         *    - C_Util.getDateMinus("2022 02 10 18 30 15", "2022 02 09 18 30 15"); // 일자 [다름]
         *    - C_Util.getDateMinus("2022 02 10 18 30 15", "2022 01 10 18 30 15"); // 월 [다름]
         *    - C_Util.getDateMinus("2022 02 10 18 30 15", "2021 02 10 18 30 15"); // 연도 [다름]
         * */


        // [초기 리턴 데이터 선언]
        int returnData = 0;


        // [인풋으로 들어온 값에 공백이 있는 경우 제거 실시]
        bigDate = bigDate.replaceAll(" ", "");
        smallDate = smallDate.replaceAll(" ", "");


        // [인풋으로 들어온 값 널 데이터 검증 실시]
        try {
            if (bigDate != null && bigDate.length()>0 && !bigDate.equals("") && !bigDate.trim().equals("null")
                    && smallDate != null && smallDate.length()>0 && !smallDate.equals("") && !smallDate.trim().equals("null")){ // [정상 데이터 인 경우]

                // [로직 처리 수행 실시]
                Date bigFormat = new SimpleDateFormat("yyyyMMddkkmmss").parse(bigDate);
                Date smallFormat = new SimpleDateFormat("yyyyMMddkkmmss").parse(smallDate);


                // [초, 분, 시간, 일자 차이 계산 실시 >> long 타입]
                long minusSec = (bigFormat.getTime() - smallFormat.getTime()) / 1000; // [초]
                long minusMin = (bigFormat.getTime() - smallFormat.getTime()) / 60000; // [분]
                long minusHour = (bigFormat.getTime() - smallFormat.getTime()) / 3600000; // [시간]
                long minusDay = minusSec / (24*60*60); // [일자]
                Log.i("---","---");
                Log.w("//===========//","================================================");
                Log.i("","\n"+"[C_Util >> getDateMinus() :: 두 날짜 차이 결과 확인]");
                Log.i("","\n"+"---------------------");
                Log.i("","\n"+"[bigDate [인풋 날짜_1] :: "+String.valueOf(bigDate)+"]");
                Log.i("","\n"+"[smallDate [인풋 날짜_2] :: "+String.valueOf(smallDate)+"]");
                Log.i("","\n"+"---------------------");
                Log.i("","\n"+"[minusSec [초] 차이 :: "+String.valueOf(minusSec)+"]");
                Log.i("","\n"+"---------------------");
                Log.i("","\n"+"[minusMin [분] 차이 :: "+String.valueOf(minusMin)+"]");
                Log.i("","\n"+"---------------------");
                Log.i("","\n"+"[minusHour [시간] 차이 :: "+String.valueOf(minusHour)+"]");
                Log.i("","\n"+"---------------------");
                Log.i("","\n"+"[minusDay [날짜] 차이 :: "+String.valueOf(minusDay)+"]");
                Log.w("//===========//","================================================");
                Log.i("---","---");


                // [리턴하려는 값을 선택 후 결과 반환]
                returnData = (int) minusMin;
            }
            else { // [비정상 데이터 인 경우]
                Log.i("---","---");
                Log.e("//===========//","================================================");
                Log.i("","\n"+"[C_Util >> getDateMinus() :: 두 날짜 차이 계산 에러]");
                Log.i("","\n"+"[error [에러] :: "+"비정상 데이터"+"]");
                Log.e("//===========//","================================================");
                Log.i("---","---");
            }
        }
        catch (Exception e){
            Log.i("---","---");
            Log.e("//===========//","================================================");
            Log.i("","\n"+"[C_Util >> getDateMinus() :: 두 날짜 차이 계산 에러]");
            Log.i("","\n"+"[catch [에러] :: "+String.valueOf(e.getMessage())+"]");
            Log.e("//===========//","================================================");
            Log.i("---","---");
        }
        // [리턴 데이터 반환 실시]
        return returnData;
    }
 

[결과 출력]

 

 

반응형
Comments