오늘 날짜로부터 1개월 전의 일자 계산
$("#srchUseDtFrom").datepicker('update', getCalcDate(0, -1, 0));
오늘 날짜로부터 2년 1개월 전의 일자 계산
$("#srchUseDtFrom").datepicker('update', getCalcDate(-2, -1, 0));
오늘 날짜로부터 2년 1개월 전이지만 5일 후의 일자 계산
$("#srchUseDtFrom").datepicker('update', getCalcDate(-2, -1, 5));
2020년은 윤년이기 때문에 2월 29일까지 있다.
따라서 2020년 2월 25일에서 5일을 더하면 3월 1일이 된다.
윤년까지 적용이 된다.
2일동안 일 하면서 고민한 결과다. 뿌듯-
검색했을 때 안나왔어서 나같은 사람들을 위해 도움이 될까하여 올린다. + 나중에 또 써먹을때를 위한 기록용
아래는 소스
파라미터 값으로 양수, 음수 둘 다 가능하다.
변경 없을 땐 0으로 넘기면 된다.
/**
* pYear년, pMonth 월, pDate 일일 전 날짜 return YYYY-MM-DD형식
* @param pYear 연도 수
* @param pMonth 개월 수
* @param pDate 일 수
*/
function getCalcDate(pYear, pMonth, pDate) {
let tday = new Date();
// 년도 및 월 계산
let nMonthDay = new Date(tday.getFullYear() + pYear, tday.getMonth() + pMonth + 1, 0);
// 오늘날짜가 지난n달 전의 마지막날짜보다 크다면 날을 그 달의 마지막날로 세팅
if (tday.getDate() > nMonthDay.getDate()) {
nMonthDay.setDate(nMonthDay.getDate());
} else {
nMonthDay.setDate(tday.getDate());
}
// 일 수 계산
nMonthDay.setDate(nMonthDay.getDate() + pDate);
// 최종
let tYear = nMonthDay.getFullYear(); // 년도
let tMonth = (nMonthDay.getMonth() + 1).toString(); // 월
if (tMonth.length < 2) {
tMonth = LIMS_lpad(tMonth, 2, '0');
}
let tDate = (nMonthDay.getDate()).toString(); // 일
if (tDate.length < 2) {
tDate = LIMS_lpad(tDate, 2, '0');
}
return tYear + '-' + tMonth + '-' + tDate;
}