138 lines
4.1 KiB
JavaScript
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;
|
|
}
|