<!-- HTML generated using hilite.me -->

function gfnGetStrtEndDt(fst_date, src_date) { 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(fst.substring(0,4)+"/"+fst.substring(4,6)+"/"+fst.substring(6,8)); var src_tmp = new Date(src.substring(0,4)+"/"+src.substring(4,6)+"/"+src.substring(6,8)); 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() + 1); // console.log("src_tmp :" + src_tmp.toLocaleDateString()); // console.log("monthDiff(strt_dt, src_tmp) :" + monthDiff(strt_dt, src_tmp)); if(src_tmp.getMonth() == 2 && fst_dd > ((src_tmp.getFullYear()%4==0)? 29:28)) { rslt = new Date(src_tmp.getFullYear(),src_tmp.getMonth(),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; }



ㅇㅇ


계약 시작일이랑, 이전 결산일 받아서 담달 결산 구간 내주는 것 짜느라 개쌩쇼 했넹.

ㅇㅇ


* 계약시작일, 계약시작일 넣으면 계약시작일 ~ 한달뒤 날짜.. 다만 1월 31일 시작인데.. 2월 31일이 없는 경우는 2월 28일. 다음 달은 3월 1일 ~ 3월 30일까지.



주기도 넣어야 하는데.. 일단은 그냥 한달 단위로.
선급, 후급 따라서도 달라지는데.. 일단 이것부터 만든 상태

케이스에 따라 강제로 첫달은 첫달 시작부터 그달 말 그후 한달 단위 나오다가 마지막 달은 그달 1일 부터 계약 종료 지정일도 넣어야 하는데 일단 보류.






만든다고 개쌩쑈를 했넹.

ㅇㅇ


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