<!-- 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일 부터 계약 종료 지정일도 넣어야 하는데 일단 보류.
만든다고 개쌩쑈를 했넹.
ㅇㅇ
자바스크립트 잘하는 애들 많징 ? 힙하게 리팩토링 해주라. 다만 라이브러리는 제이쿼리 정도만 쓸 생각이다. 가볍게 갈라고 ㅇㅇ 프로토타입도 되도록 안 쓸 생각 ㅇㅇ
....?
주기 넣기도 완료. 나머지는 그닥 어렵지 않아서 대충 처리될듯. 끝~