<!-- HTML generated using hilite.me -->
function gfnGetStrtEndDt(fst_date, src_date, prd) {
if (fst_date == null || src_date == null)
return null;
var rslt = "";
var cflag = false;
var fst = gfnRmvDtFmt(fst_date);
var src = gfnRmvDtFmt(src_date);
var fst_tmp = new Date(gfnGetDtFmt(fst));
var src_tmp = new Date(gfnGetDtFmt(src));
var fst_dd = fst_tmp.getDate();
var strt_dt = new Date(src_tmp);
if (fst != src) {
strt_dt = new Date(src_tmp.setDate(src_tmp.getDate() + 1));
}
var tmp = new Date(strt_dt);
tmp.setDate(1);
var diff = (fst != src) ? monthDiff(fst_tmp, tmp) : 0;
var fst_dd_bak = fst_tmp.getDate();
fst_tmp.setMonth(fst_tmp.getMonth() + diff);
var fst_mm_bak = fst_tmp.getMonth();
fst_tmp.setDate(fst_dd_bak - 1);
// console.log("diff :" + diff);
// console.log("fst_dd_bak :" + fst_dd_bak);
// console.log("fst_mm_bak :" + fst_mm_bak);
// console.log("fst_tmp.getMonth() :" + fst_tmp.getMonth());
// console.log("fst_tmp :" + fst_tmp.toLocaleDateString());
src_tmp.setMonth(src_tmp.getMonth() + prd);
// console.log("src_tmp :" + src_tmp.toLocaleDateString());
// console.log("monthDiff(strt_dt, src_tmp) :" + monthDiff(strt_dt, src_tmp));
if ( (src_tmp.getMonth() == 2 && src_tmp.getDate() != fst_dd )
&& fst_dd > ((src_tmp.getFullYear() % 4 == 0) ? 29 : 28)) {
rslt = new Date(src_tmp.getFullYear(), src_tmp.getMonth() + prd - 1, 1);
rslt.setDate(rslt.getDate() - 1);
// console.log("rslt half : " + rslt.toLocaleDateString());
if ((fst != src) && (fst_tmp.getMonth() == rslt.getMonth())) {
rslt.setDate(fst_tmp.getDate());
}
} else {
rslt = new Date(src_tmp);
rslt.setDate(rslt.getDate() - 1);
if ((fst != src) && (fst_tmp.getMonth() == rslt.getMonth())) {
rslt.setDate(fst_tmp.getDate());
}
}
console.log("strt_dt:" + strt_dt.toLocaleDateString());
console.log("end_dt :" + rslt.toLocaleDateString());
return {
"strt_dt": getYYYYMMDD(strt_dt),
"end_dt": getYYYYMMDD(rslt)
};
}
function getYYYYMMDD(tmp) {
var mm = tmp.getMonth() + 1;
var dd = tmp.getDate();
return [tmp.getFullYear(),
(mm>9 ? '' : '0') + mm,
(dd>9 ? '' : '0') + dd
].join('');
};
function monthDiff(d1, d2) {
var months;
months = (d2.getFullYear() - d1.getFullYear()) * 12;
months -= d1.getMonth() + 1;
months += d2.getMonth();
months++;
return months <= 0 ? 0 : months;
}
function gfnGetDtFmt(val) {
return val.replace(/(\d{4}).*(\d{2}).*(\d{2})/, "$1/$2/$3");
}
function gfnRmvDtFmt(val) {
return val.replace(/(\d{4}).*(\d{2}).*(\d{2})/, "$1$2$3");
}
jquery 라이브러리만 이용할 생각인데..
불필요한 것 제거하고 좀 더 있어 보이게 리팩토링 해줘~
ㅇㅇ
하노?
마노?
이기노?
북딲노?
섹스노?
해당 댓글은 삭제되었습니다.
뭐 내용은 입력을 계약시작일, 직전 결산 종료일, 주기 넣고.. 그 이후 주기 시작일과 그 주기의 결산일 구하는 코드인데.. 어제 급하게 만들어서.. 불필요해보이는 공통적인 부분 보이면 리팩토링 좀 ㅇㅇ
보다보니.. 첨에 만들어뒀다가 쓸모 없는 플래그 박혀있넹.. ㅇㅇ 뭐 이후에 추가로 넣어야 할 부분 있으니.. 그때 써먹어야징
해당 댓글은 삭제되었습니다.
요건이 계약시작일 부터 계약시작일 + 1달 -1일 인데.. 1.31 ~ 2.28 같은 특수 케이스 때문에.. 그래. ㅇㅇ
쌉불가능
해당 댓글은 삭제되었습니다.
ㅇㅇ