Files
sk_fems_ui/plugins/dateUtility.js
2025-07-12 15:13:46 +09:00

162 lines
3.9 KiB
JavaScript

const dayjs = require('dayjs');
const DateUtility = () => {
/*
// *
// * @param {*} date 기준일
// * @param {*} val 계산일수
// * @param {*} type 날짜 포멧
// * @returns
*/
const addDate = (val, type, date) => {
let returnDt = null;
const myDate = !date ? dayjs() : dayjs(date);
returnDt = myDate.add(val || 0, 'day');
if (type === 'd') returnDt = returnDt.format('YYYYMMDD');
else if (type) returnDt = returnDt.format(type);
return returnDt;
};
/*
// *
// * @param {*} date 기준일
// * @param {*} val 계산주수
// * @param {*} type 날짜 포멧
// * @returns
*/
const addWeek = (val, type, date) => {
let returnDt = null;
const myDate = !date ? dayjs() : dayjs(date);
returnDt = myDate.add(val || 0, 'week');
if (type === 'd') returnDt = returnDt.format('YYYYMMDD');
else if (type) returnDt = returnDt.format(type);
return returnDt;
};
/*
// *
// * @param {*} date 기준일
// * @param {*} val 계산월수
// * @param {*} type 날짜 포멧
// * @returns
*/
const addMonth = (val, type, date) => {
let returnDt = null;
const myDate = !date ? dayjs() : dayjs(date);
returnDt = myDate.add(val || 0, 'month');
//월말인 경우 월을 더할 경우 해당월의 마지막날로 설정되도록 처리
if (
myDate.format('YYYYMMDD') === myDate.endOf('month').format('YYYYMMDD')
) {
returnDt = returnDt.endOf('month');
}
if (type === 'd') returnDt = returnDt.format('YYYYMMDD');
else if (type) returnDt = returnDt.format(type);
return returnDt;
};
/*
// *
// * @param {*} date 기준일
// * @param {*} val 계산연수
// * @param {*} type 날짜 포멧
// * @returns
*/
const addYear = (val, type, date) => {
let returnDt = null;
const myDate = !date ? dayjs() : dayjs(date);
returnDt = myDate.add(val || 0, 'year');
if (type === 'd') returnDt = returnDt.format('YYYYMMDD');
else if (type) returnDt = returnDt.format(type);
return returnDt;
};
/*
// *
// * @param {*} fromDt 시작일
// * @param {*} toDt 종료일
// * @param {*} type 기준
// * @returns
*/
const diff = (fromDt, toDt, type) => {
let returnDt = null;
if (fromDt && toDt) {
const myFromDt = fromDt === 'today' ? dayjs() : dayjs(fromDt);
const myToDt = toDt === 'today' ? dayjs() : dayjs(toDt);
let myType = 'days';
switch (type) {
case 'w':
myType = 'weeks';
break;
case 'm':
myType = 'months';
break;
case 'y':
myType = 'year';
break;
case 'd':
myType ='day';
break;
default:
}
returnDt = myToDt.diff(myFromDt, myType);
}
return returnDt;
};
/*
// *
// * @param {*} d 기준일
// * @param {*} f 날짜 포멧
// * @returns
*/
const format = (d, f) => {
let returnDt = null;
const myDate = !d ? dayjs() : dayjs(d);
const myFormat = f || 'YYYYMMDD';
returnDt = myDate.format(myFormat);
return returnDt;
};
/*
// *
// * @param {*} strDate 기준일
// * @returns
*/
const getDate = strDate => {
const myDate = !strDate ? dayjs() : dayjs(strDate);
return myDate
.hour(0)
.minute(0)
.second(0);
};
/*
// *
// * @param {*} date 기준일
// * @param {*} type 날짜 포멧
// * @returns
*/
const getLastDay = (type, date) => {
let returnDt = null;
const myDate = !date || date.length < 4 ? dayjs() : dayjs(date);
returnDt = myDate.endOf('month');
if (type === 'd') returnDt = returnDt.format('YYYYMMDD');
else if (type) returnDt = returnDt.format(type);
return returnDt;
};
return {
addDate, // 날짜 더하기
addWeek, // 주 더하기
addMonth, // 월 더하기
addYear, // 년도 더하기
diff, // 두 날짜의 차이 구하기
format, // 날짜 값을 포맷팅하기
getDate, // 스트링 날자 값을 data type로 변환하기
getLastDay, // 해당 년/월의 마지막 날짜 구하기
};
};
export default DateUtility();