<!-- 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 라이브러리만 이용할 생각인데..

불필요한 것 제거하고 좀 더 있어 보이게 리팩토링 해줘~

ㅇㅇ



https://jsfiddle.net/n3ue90br/6/