[  Nexacro.Date - 연도, 년월 얻기 및 계산하기 ]

재년도 얻기

현재년도.월 얻기

현재 월 얻기

입력된 날자에 OffSet 으로 지정된 만큼의 달을 더한다.
입력된 날자에 nOffset 으로 지정된 만큼의 월을 증감한다.
두 월간의 차이 월수 계산
현재일의 년/월/주차를 알아냄


 

/******************************************************************************************
 * 기      능 : 현재년도 얻기
 * 반      환 : 현재년도
 *****************************************************************************************/

 function gfn_GetCurrYear(){

    return gfn_getToday().substr(0, 4);

}

 

/******************************************************************************************
 * 기      능 : 현재년도.월 얻기
 * 반      환 : 현재년도.월
 *****************************************************************************************/

 function gfn_GetCurrYYMM(){

    return gfn_getToday().substr(0, 6);

}

 

/******************************************************************************************
 * 기      능 : 현재 월 얻기
 * 반      환 : 현재 월
 *****************************************************************************************/

 function gfn_GetCurrMM(){

    return gfn_getToday().substr(4, 2);

}

 

/******************************************************************************************
 * 기능 : 입력된 날자에 OffSet 으로 지정된 만큼의 달을 더한다.
 * 인자 : psYymm : YYYYMM 형식인 년월
 *         pnOffSet : 추가할 개월 수(+, - 가능) (지정하지 않으면 Default Value = 1 로 적용됩니다)
 * 리턴 : 추가한 년월
 * 예문 :
 *****************************************************************************************/

function gfn_AddMonth(psYymm, pnOffSet){

    if (gfn_IsNull(pnOffSet)) pnOffSet = 1;

 

    var d = new Date(1);//윤달 때문에 꼭넣어야함

    d.setYear(psYymm.substr(0, 4));

    d.setMonth(toNumber(psYymm.substr(4, 2))-1);

    d.toFormatString("%Y-%m-%d", "ko_KR"); // 값셋팅

    

    d.addMonth(pnOffSet);

    return d.toFormatString("%Y%m", "ko_KR");

}

/**********************************************************************************
 ★ 설명
    입력된 날자에 nOffset 으로 지정된 만큼의 월을 증감한다.
 ★ parameter
    1. sDate : 날짜 ( 예 : "20121122" )
    2. nOffset : 월 증감값 ( 예 : 1 또는 -1 )
 ★ return
    - 성공 = yyyyMMdd형태의 증감된 날짜 ( 예 : "20121202" 또는 "20121022" )
    - 실패 = ""
 ★ 주의사항    
    단, 증감된 날짜가 그달의 마지막날짜월보다 큰 경우는 드달의 마지막 날짜를 return한다.
    예를 들어, sDate="20120531", nOffset=-1일 경우 return="20120430" 이 된다.
**********************************************************************************/

function fn_AddMonth(sDate, nOffset)

{

 if( fn_IsNull(sDate) || fn_IsNull(nOffset) )  return "";

 

    var nYear = parseInt(sDate.substr(0, 4));

    var nMonth = parseInt(sDate.substr(4, 2))+nOffset;

    var nDate = parseInt(sDate.substr(6, 2));

    var nLastDate, sRet;

 

  sRet = MakeDate(nYear, nMonth, 1);

    nLastDate = LastDateNum(sRet);

    sRet = sRet.substr(0,6);

    if( nDate > nLastDate )

  sRet += nLastDate.toString();

 else

  sRet += nDate.toString();

  

 return sRet;

}

 

/*******************************************************************************
 ★ 설명
    두 월간의 차이 월수 계산
 ★ parameter
    1. sStartDate : yyyyMMdd형태의 From 일자 ( 예 : "20121122" )
    2. sEndDate   : yyyyMMdd형태의 To 일자 ( 예 : "20131202" )
 ★ return
    - 성공 = 숫자 형태의 차이월수  ( 예 : 10 )
             단, sEndDate < sStartDate이면 음수가 return된다.
    - 실패 = NaN
 ★ 주의사항   
    단, sStartDate, sEndDate의 일은 포함하지 않고 계산된다.
**********************************************************************************/

function fn_DiffMonth(sStartDate, sEndDate)

{

 var nStartMon, nEndMon;

 

 if( fn_IsNull(sStartDate) || fn_IsNull(sEndDate) ) return NaN;

 

 nStartMon = parseInt(sStartDate.substr(0,4), 10)*12 + parseInt(sStartDate.substr(4,2), 10);

 nEndMon = parseInt(sEndDate.substr(0,4), 10)*12 + parseInt(sEndDate.substr(4,2), 10);

 

 return (nEndMon - nStartMon);

}

 

/******************************************************************************************
// 현재일의 년/월/주차를 알아냄

 *****************************************************************************************/

function fpm_fn_weekDayNow(paramDate)

{

    var nDate = paramDate;

    

    var rtnYear,rtnMonth,rtnWeek,wnum;

    var beforeDayCnt = 0;

    var sDate = new Date(nDate.getYear() +"/" + (parseInt(nDate.getMonth()) +1) + "/01");

     

    // 해당일의 요일을 숫자로 가져옴

    wnum = sDate.getDay();    

    

    // 1주차 전에 남아 있는 이전일의 갯수(일요일까지)

    if (wnum < 1){            

        beforeDayCnt = 1;               // 해당월의 시작일이 일요일 이라면

    } else if(wnum > 1) {

        beforeDayCnt = 7 - ( wnum - 1 ); // 해당월의 시작일이 월요일 이후라면

    }

    

    rtnWeek=Math.floor((nDate.getDate() - beforeDayCnt - 1)/7) + 1; // 해당주차가 나옴

 

    if (rtnWeek < 1) {  //틀별 케이스 이전달에 속한 경우

        nDate.addMonth(-1);

        nDate = new Date(nDate.getYear(),nDate.getMonth()+1,"0");

        sDate = new Date(nDate.getYear() +"/" + nDate.getMonth() +1 + "/01");

        wnum = sDate.getDay();

         if (wnum < 1){            

            beforeDayCnt = 1;          

        } else if(wnum > 1) {

            beforeDayCnt = 7 - ( wnum - 1 );

        }

        rtnWeek=Math.floor((nDate.getDate() - beforeDayCnt - 1)/7) + 1;

        rtnYear = nDate.getYear();

        rtnMonth = nDate.getMonth()+1;

        

    } else {

        rtnWeek=Math.floor((nDate.getDate() - beforeDayCnt - 1)/7) + 1;

        rtnYear = nDate.getYear();

        rtnMonth = nDate.getMonth()+1;

    }

    

    return rtnYear + "/" +rtnMonth + "/" + rtnWeek;

}

 

☞  

 
 
 
 

  

Posted by 농부지기
,