mjon_git/src/main/webapp/publish/js/dateUtils.js

138 lines
4.1 KiB
JavaScript

/**
* 날짜관련
* @author 이호영
* @since 2024.07.15
* @version 1.0
* @see
*
* <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ---------- -------- ---------------------------
* 2024.07.15 이호영 최초 생성
* 2020.xx.xx
* </pre>
*/
/**
* 검색 날짜관련 ID와 체크할 월을 가지고 체크하는 function
* @param {String} a 검색 시작 ID
* @param {String} b 검색 종료 ID
* @param {String} c 체크할 month
* @returns {Boolean} a날짜와 b날짜를 비교해서 c월 이상이면 false 이하면 true
*/
function fn_G_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 개월 전보다 이전인지 확인
if (start <= maxStartDate) {
alert("총 검색 기간은 " + chkMonth + "개월을 넘을 수 없습니다.");
return false;
}
return true;
}
/**
* 이번년도 시작날짜와 종료날짜 구하기
* @param {String} a 값 입력할 search start input ID
* @param {String} b 값 입력할 search start input ID
* @returns {String} a ID value 해당년도/01/01
* {String} b ID value 해당년도/12/31
*/
function fn_G_getCurrYearDateRange(startId, endId) {
// 현재 년도 구하기
var currentYear = new Date().getFullYear();
// 현재 년도를 기준으로 시작일과 종료일 설정
var startOfYear = currentYear + '/01/01';
var endOfYear = currentYear + '/12/31';
$('#'+startId).val(startOfYear);
$('#'+endId).val(endOfYear);
}
/**
* 몇개월 전 date 구하기
* @param {String} a 값 입력할 search input ID
* @param {String} b 값 구고하고 싶은 month번째 전월
* @returns {String} ex) b = 3; a value 해당년도/해당달-3/해당일+1
*/
function fn_G_getPrevMonth(searchId, month) {
var d = new Date();
d.setDate(d.getDate() +1);
var monthOfYear = d.getMonth();
d.setMonth(monthOfYear - month);
console.log('getDateStr(d) : ', getDateStr(d));
$('#'+searchId).val(getDateStr(d));
}
/**
* 해당 년월일 가져오기
* @param {String} a 값 입력할 search input ID
* @returns {String} ID value 해당년도/해당달/해당일
*/
function fn_G_getCurrDate(searchId) {
var d = new Date();
$('#'+searchId).val(getDateStr(d));
}
// 날짜를 원하는 포멧으로 수정후 리턴 Str
function getDateStr(myDate){
var year = myDate.getFullYear();
var month = ("0"+(myDate.getMonth()+1)).slice(-2);
var day = ("0"+myDate.getDate()).slice(-2);
return ( year + '/' + month + '/' + day );
}
/**
* 검색 날짜관련 ID로 검색 시작일 최대 기간을 제한 function
* @param {String} a 검색 시작 ID
* @param {String} b 최대 기간 달 수
* @returns {Boolean} a날짜와 현재 날짜를 비교해서 차이가 b월 이상이면 false 이하면 true
*/
function fn_G_limitDateChk(startId, limitMonth) {
// 시작일자 가져오기
var startDate = document.getElementById(startId).value;
// 날짜 형식으로 변환 및 현재 날짜 설정
var start = new Date(startDate);
var today = new Date();
var maxDate = new Date(today);
maxDate.setMonth(maxDate.getMonth() - limitMonth);
if(start < maxDate){
alert("검색 시작일자를 최근 "+limitMonth+"개월 이내로 입력해주세요.");
return false;
}
return true;
}