From 7d2ce518aa8f2e3a548c3b7b5d53d43eca36fc0c Mon Sep 17 00:00:00 2001 From: hylee Date: Fri, 5 Jul 2024 18:33:02 +0900 Subject: [PATCH] =?UTF-8?q?date=20=EB=AA=A8=EB=93=88=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/itn/com/cmm/util/DateUtils.java | 68 ++++++++--------- .../web/MjonMsgCustomWebController.java | 2 +- .../let/mjo/pay/web/MjonPayController.java | 8 +- .../WEB-INF/jsp/web/custom/MsgCustomView.jsp | 2 +- .../webapp/WEB-INF/jsp/web/pay/PayList.jsp | 2 +- .../WEB-INF/jsp/web/pay/PayUserSWList.jsp | 2 +- src/main/webapp/publish/js/dateUtils.js | 73 +++++++++---------- 7 files changed, 77 insertions(+), 80 deletions(-) diff --git a/src/main/java/itn/com/cmm/util/DateUtils.java b/src/main/java/itn/com/cmm/util/DateUtils.java index 5bb5cc16..f57f5711 100644 --- a/src/main/java/itn/com/cmm/util/DateUtils.java +++ b/src/main/java/itn/com/cmm/util/DateUtils.java @@ -143,47 +143,43 @@ public final class DateUtils { * @param dateVal * @return */ - public static boolean dateChkAndValueChk(String searchStartDate, String searchEndDate, int dateVal) { - + public static boolean dateChkAndValueChk(String searchStartDate, String searchEndDate, int months) { + boolean isValid = true; - boolean isValid = true; - // 날짜 형식 지정 - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd"); + // 날짜 검증 + LocalDate startDate = null; + LocalDate endDate = null; - //날짜 검증 - LocalDate startDate = null; - LocalDate endDate = null; + // 검색 시작일자와 종료일자가 있는지 체크 + if (searchStartDate == null || searchStartDate.isEmpty() || searchEndDate == null || searchEndDate.isEmpty()) { + isValid = false; + } - // 검색 시작일자와 종료일자가 있는지 체크 - if (searchStartDate == null || searchStartDate.isEmpty() || searchEndDate == null || searchEndDate.isEmpty()) { - isValid = false; - } + // 날짜 형식으로 변환 + if (isValid) { + try { + startDate = LocalDate.parse(searchStartDate, SLUSH_FORMATTER); + endDate = LocalDate.parse(searchEndDate, SLUSH_FORMATTER); + } catch (Exception e) { + isValid = false; + } + } - // 날짜 형식으로 변환 - if (isValid) { - try { - startDate = LocalDate.parse(searchStartDate, formatter); - endDate = LocalDate.parse(searchEndDate, formatter); - } catch (Exception e) { - isValid = false; - } - } + // 시작일자가 종료일자보다 이후인지 확인 + if (isValid && startDate.isAfter(endDate)) { + isValid = false; + } - // 시작일자가 종료일자보다 이후인지 확인 - if (isValid && startDate.isAfter(endDate)) { - isValid = false; - } + // 총 기간이 지정한 개월 수를 넘는지 확인 + if (isValid) { + long monthsBetween = ChronoUnit.MONTHS.between(startDate, endDate); + System.out.println("monthsBetween : "+ monthsBetween); + if (monthsBetween >= months) { + isValid = false; + } + } - // 총 기간이 365일을 넘는지 확인 - if (isValid) { - long daysBetween = ChronoUnit.DAYS.between(startDate, endDate); - if (daysBetween > dateVal) { - isValid = false; - } - } - System.out.println("isValid : "+ isValid); - - return isValid; - } + return isValid; + } } diff --git a/src/main/java/itn/let/mjo/msgCustom/web/MjonMsgCustomWebController.java b/src/main/java/itn/let/mjo/msgCustom/web/MjonMsgCustomWebController.java index 92c21cc6..e302bfeb 100644 --- a/src/main/java/itn/let/mjo/msgCustom/web/MjonMsgCustomWebController.java +++ b/src/main/java/itn/let/mjo/msgCustom/web/MjonMsgCustomWebController.java @@ -229,7 +229,7 @@ public class MjonMsgCustomWebController { // 검색 데이터가 없거나 // 시작일자가 종료일자보다 이후이거나 // 총 기간이 365일이 넘으면 현재일부터 365일 전 날짜를 넣어서 검색 - if(!DateUtils.dateChkAndValueChk(mjonMsgCustomVO.getSearchStartDate(),mjonMsgCustomVO.getSearchEndDate(), 365 )) { + if(!DateUtils.dateChkAndValueChk(mjonMsgCustomVO.getSearchStartDate(),mjonMsgCustomVO.getSearchEndDate(), 12 )) { mjonMsgCustomVO.setSearchStartDate(DateUtils.getDateDaysAgo(365)); mjonMsgCustomVO.setSearchEndDate(DateUtils.getCurrentDate()); diff --git a/src/main/java/itn/let/mjo/pay/web/MjonPayController.java b/src/main/java/itn/let/mjo/pay/web/MjonPayController.java index 38b36be4..5f39b64d 100644 --- a/src/main/java/itn/let/mjo/pay/web/MjonPayController.java +++ b/src/main/java/itn/let/mjo/pay/web/MjonPayController.java @@ -2108,7 +2108,11 @@ public class MjonPayController { // mjonPayVO.setStartDate(mjonPayVO.getStartDate() == null ? DateUtil.getDateDaysAgo(365) : mjonPayVO.getStartDate()); // mjonPayVO.setEndDate(mjonPayVO.getEndDate() == null ? DateUtil.getCurrentDate() : mjonPayVO.getEndDate()); - if(!DateUtils.dateChkAndValueChk(mjonPayVO.getSearchStartDate(),mjonPayVO.getSearchEndDate(), 365 )) { + System.out.println("???"); + System.out.println("mjonPayVO.getStartDate() :: "+mjonPayVO.getStartDate()); + System.out.println("mjonPayVO.getEndDate() :: "+mjonPayVO.getEndDate()); + if(!DateUtils.dateChkAndValueChk(mjonPayVO.getStartDate(),mjonPayVO.getEndDate(), 12 )) { + System.out.println("???"); mjonPayVO.setStartDate(DateUtils.getDateDaysAgo(365)); mjonPayVO.setEndDate(DateUtils.getCurrentDate()); }; @@ -2762,7 +2766,7 @@ public class MjonPayController { // 검색 데이터가 없거나 // 시작일자가 종료일자보다 이후이거나 // 총 기간이 365일이 넘으면 현재일부터 365일 전 날짜를 넣어서 검색 - if(!DateUtils.dateChkAndValueChk(mjonMsgVO.getStartDate(),mjonMsgVO.getEndDate(), 365 )) { + if(!DateUtils.dateChkAndValueChk(mjonMsgVO.getStartDate(),mjonMsgVO.getEndDate(), 12 )) { mjonMsgVO.setStartDate(DateUtils.getDateDaysAgo(365)); mjonMsgVO.setEndDate(DateUtils.getCurrentDate()); diff --git a/src/main/webapp/WEB-INF/jsp/web/custom/MsgCustomView.jsp b/src/main/webapp/WEB-INF/jsp/web/custom/MsgCustomView.jsp index a45c2505..06f2e530 100644 --- a/src/main/webapp/WEB-INF/jsp/web/custom/MsgCustomView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/custom/MsgCustomView.jsp @@ -129,7 +129,7 @@ function customSampleListAjax(pageNo){ //맞춤제작 내보관함 리스트 function myCustomListAjax(pageNo){ - if(!fn_cmndataValueChk("startDate", "endDate", 365)){ + if(!fn_cmndataValueChk("startDate", "endDate", 12)){ return; }; diff --git a/src/main/webapp/WEB-INF/jsp/web/pay/PayList.jsp b/src/main/webapp/WEB-INF/jsp/web/pay/PayList.jsp index 3a802550..2c9ec61d 100644 --- a/src/main/webapp/WEB-INF/jsp/web/pay/PayList.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/pay/PayList.jsp @@ -54,7 +54,7 @@ function listLoad(subpage , searchFlag ){ function linkPage(pageNo){ - if(!fn_cmndataValueChk("startDate", "endDate", 365)){ + if(!fn_cmndataValueChk("startDate", "endDate", 12)){ return; }; diff --git a/src/main/webapp/WEB-INF/jsp/web/pay/PayUserSWList.jsp b/src/main/webapp/WEB-INF/jsp/web/pay/PayUserSWList.jsp index be8de4a8..a6f9b25a 100644 --- a/src/main/webapp/WEB-INF/jsp/web/pay/PayUserSWList.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/pay/PayUserSWList.jsp @@ -57,7 +57,7 @@ function setCalVal(val,targetObj){ // 요금사용내역 리스트 function payUserListAjax(pageNo){ - if(!fn_cmndataValueChk("startDate", "endDate", 365)){ + if(!fn_cmndataValueChk("startDate", "endDate", 12)){ return; }; diff --git a/src/main/webapp/publish/js/dateUtils.js b/src/main/webapp/publish/js/dateUtils.js index 054dc4e9..79faae61 100644 --- a/src/main/webapp/publish/js/dateUtils.js +++ b/src/main/webapp/publish/js/dateUtils.js @@ -2,41 +2,38 @@ $(document).ready(function () { }); - -function fn_cmndataValueChk(startId, endId, chkDay){ - // 시작일자와 종료일자를 가져오기 - var startDate = document.getElementById(startId).value; - var endDate = document.getElementById(endId).value; - - // 날짜가 입력되었는지 확인 - if (!startDate || !endDate) { - alert("검색 시작일자와 종료일자를 입력해주세요."); - return false; - } - - // 날짜 형식으로 변환 - var start = new Date(startDate); - var end = new Date(endDate); - - // 날짜 유효성 체크 - if (isNaN(start.getTime()) || isNaN(end.getTime())) { - alert("유효한 날짜 형식을 입력해주세요."); - return false; - } - - // 총 기간이 chkDay일을 넘는지 확인 - var diffTime = Math.abs(end - start); - var diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)); - if (diffDays > chkDay) { - - var chkDayTxt = ""; - if(chkDay == 365){ - chkDayTxt = '1년'; - } - - alert("총 검색 기간은 "+chkDayTxt+"을 넘을 수 없습니다."); - return false; - } - - return true; -} \ No newline at end of file +function fn_cmndataValueChk(startId, endId, chkMonth) { + // 시작일자와 종료일자를 가져오기 + var startDate = document.getElementById(startId).value; + var endDate = document.getElementById(endId).value; + + // 날짜가 입력되었는지 확인 + if (!startDate || !endDate) { + alert("검색 시작일자와 종료일자를 입력해주세요."); + return false; + } + + // 날짜 형식으로 변환 + var start = new Date(startDate); + var end = new Date(endDate); + + // 날짜 유효성 체크 + if (isNaN(start.getTime()) || isNaN(end.getTime())) { + alert("유효한 날짜 형식을 입력해주세요."); + return false; + } + + // 종료일자를 기준으로 chkMonth 개월 전의 날짜 계산 + var maxStartDate = new Date(end); + maxStartDate.setMonth(maxStartDate.getMonth() - chkMonth); + + // 시작일자가 종료일자 기준 chkMonth 개월 전보다 이전인지 확인 + console.log('start :: ',start); + console.log('maxStartDate :: ',maxStartDate); + if (start <= maxStartDate) { + alert("총 검색 기간은 " + chkMonth + "개월을 넘을 수 없습니다."); + return false; + } + + return true; +}