[ Nexacro.String -  문자열 찾기 ]


 


/******************************************************************************************
 * 기능 : 문자열의 위치를 대소문자 구별하여 찾는다
 * 인자 : 1. sOrg   : 원래 문자열( 예 : "aaBBbbcc" )
          2. sFind  : 찾고자 하는 문자열( 예 : "bb" )
          3. nStart : 검색 시작위치 (옵션 : Default=0) ( 예 : 1 )
 * 리턴 : 성공 = 찾고자 하는 문자열의 시작위치 ( 예 : 4 )
          실패 = -1
 * 예문 :
 *****************************************************************************************/

function fn_Pos(sOrg, sFind, nStart)

{

    if( fn_IsNull(sOrg) || fn_IsNull(sFind) )  return -1;

 

    if( fn_IsNull(nStart) ) nStart = 0;

 

    return sOrg.indexOf(sFind, nStart);

}

 

/******************************************************************************************
 * 기능 : 문자열의 위치를 대소문자 구별없이 찾는다
 * 인자 : 1. sOrg   : 원래 문자열( 예 : "aaBBbbcc" )
          2. sFind  : 찾고자 하는 문자열( 예 : "bb" )
          3. nStart : 검색 시작위치 (옵션 : Default=0) ( 예 : 1 )   
 * 리턴 : 성공 = 찾고자 하는 문자열의 시작위치 ( 예 : 2 )
          실패 = -1
 * 예문 :
 *****************************************************************************************/
 

function fn_PosCase(sOrg, sFind, nStart)

{

    if( fn_IsNull(sOrg) || fn_IsNull(sFind) )  return -1;

    if( fn_IsNull(nStart) )  nStart = 0;

 

    return sOrg.toLowerCase().indexOf(sFind.toLowerCase(), nStart);

}

 

 

    {

        if( sOrg.substr( pos, sFind.length ) == sFind ) break;

    }

    return pos;

}

 

/******************************************************************************************
 * 기능 : 문자열의 위치를 대소문자 구별없이 거꾸로 찾는다
 * 인자 : 1. sOrg   : 원래 문자열( 예 : "aaBBbbcc" )
          2. sFind  : 찾고자 하는 문자열( 예 : "BB" )
          3. nStart : 검색 시작위치 (옵션 : Default=문자열의 끝 ) ( 예 : 6 )
 * 리턴 : 성공 = 찾고자 하는 문자열의 시작위치 ( 예 : 4 )
          실패 = -1
 * 예문 :
 *****************************************************************************************/

function fn_PosReverseCase(sOrg, sFind, nStart)

{

    var pos;

 

    if( fn_IsNull(sOrg) || fn_IsNull(sFind) )  return -1;

    if( fn_IsNull(nStart) )  nStart = sOrg.length-1;

 

    for( pos = nStart ; pos >= 0 ; pos-- )

    {

        if( sOrg.substr( pos, sFind.length ).toLowerCase() == sFind.toLowerCase() )  break;

    }

 

    return pos;

}

 

/******************************************************************************************
 * 기능 : 시작글자와 끝글자에 해당하는 글자의 사이에 있는 가운데 글자를
          대소문자를 구별하여 찾는다.
          ( 예 : aaBBbbccdd에서 bb, dd사이의 글자 cc를 찾는다 )
 * 인자 : 1. sOrg   : 원래 문자열( 예 : "aaBBbbccdd" )
          2. sStart : 찾고자 하는 시작 문자열(옵션 : Default = "")(예 : "bb" )
                     (만일, sStart=""이면 nStart부터 sEnd까지의 모든 문자열이 return된다.)
          3. sEnd   : 찾고자 하는 끝 문자열 (옵션 : Default = "")( 예 : "dd" )
                     (만일, sEnd=""이면 sStart부터 문자열의 끝까지의 모든 문자열이 return된다.)
          4. nStart : 검색 시작위치 (옵션 : Default=0) ( 예 : 1 )
 * 리턴 : 성공 = 가운데 글자 ( 예 : "cc" )
          실패 = ""
 * 예문 :
 *****************************************************************************************/

function fn_Mid(sOrg, sStart, sEnd, nStart)

{

    var pos_start, pos_end, ret_str;

 

    if( fn_IsNull(sOrg) )  return "";

    if( fn_IsNull(sStart) ) sStart = "";

    if( fn_IsNull(sEnd) )  sEnd = "";

    if( fn_IsNull(nStart) ) nStart = 0;

 

    if( sStart == "" )

        pos_start = nStart;

    else{

        pos_start = Pos(sOrg, sStart, nStart);

        if( pos_start < 0 ) return "";

    }

 

    if( sEnd == "" )

        pos_end = sOrg.length;

    else{

        pos_end = Pos(sOrg, sEnd, pos_start+sStart.length, nStart);

        if( pos_end < 0 ) return "";

    }

 

    return sOrg.substring(pos_start+sStart.length, pos_end);

}

 

/******************************************************************************************
 * 기능 : 시작글자와 끝글자에 해당하는 글자의 사이에 있는 가운데 글자를
          대소문자 구별없이 찾는다.
          ( 예 : aaBBbbccdd에서 bb, dd사이의 글자 bbcc를 찾는다 )
 * 인자 : 1. sOrg   : 원래 문자열( 예 : "aaBBbbccdd" )
          2. sStart : 찾고자 하는 시작 문자열(옵션 : Default = "")(예 : "bb" )
                     (만일, sStart=""이면 nStart부터 sEnd까지의 모든 문자열이 return된다.)
          3. sEnd   : 찾고자 하는 끝 문자열 (옵션 : Default = "")( 예 : "dd" )
                     (만일, sEnd=""이면 sStart부터 문자열의 끝까지의 모든 문자열이 return된다.)
          4. nStart : 검색 시작위치 (옵션 : Default=0) ( 예 : 1 )
 * 리턴 : 성공 = 가운데 글자 ( 예 : "bbcc" )
          실패 = ""
 * 예문 :
 *****************************************************************************************/

function fn_MidCase(sOrg, sStart, sEnd, nStart)

{

    var pos_start, pos_end, ret_str;

 

    if( fn_IsNull(sOrg) )  return "";

    if( fn_IsNull(sStart) ) sStart = "";

    if( fn_IsNull(sEnd) )  sEnd = "";

    if( fn_IsNull(nStart) ) nStart = 0;

 

    if( sStart == "" )

        pos_start = nStart;

    else{

        pos_start = PosCase(sOrg, sStart, nStart);

        if( pos_start < 0 ) return "";

    }

 

    if( sEnd == "" )

        pos_end = sOrg.length;

    else {

        pos_end = PosCase(sOrg, sEnd, pos_start+sStart.length, nStart);

        if( pos_end < 0 ) return "";

    }

    return sOrg.substring(pos_start+sStart.length, pos_end);

}

 

 /******************************************************************************************
 * 기능 : Mid()함수와 동일하나 Return을 Array로 한다.
 * 인자 : 1. sOrg   : 원래 문자열( 예 : "aaBBbbccdd" )
          2. sStart : 찾고자 하는 시작 문자열(옵션 : Default = "")(예 : "bb" )
                     (만일, sStart=""이면 nStart부터 sEnd까지의 모든 문자열이 return된다.)
          3. sEnd   : 찾고자 하는 끝 문자열 (옵션 : Default = "")( 예 : "dd" )
                     (만일, sEnd=""이면 sStart부터 문자열의 끝까지의 모든 문자열이 return된다.)
          4. nStart : 검색 시작위치 (옵션 : Default=0) ( 예 : 1 )     
 * 리턴 : - 성공
              Array[0] = 가운데 글자 ( 예 : "cc" )
              Array[1] = sStart의 위치 ( 예 : 4 )
              Array[2] = sEnd의 위치 ( 예 : 8 )
          - 실패
              Array[0] = ""
              Array[1] = -1
              Array[2] = -1
 * 예문 :
 * 참고 : sStart, sEnd의 위치를 알아내려면 다시한번 찾아야 하므로 속도 때문에 만듬
 *****************************************************************************************/

function fn_AMid(sOrg, sStart, sEnd, nStart)

{

    var pos_start, pos_end, ret_str;

    var arr = new Array("",-1,-1);

 

    if( fn_IsNull(sOrg) )  return "";

    if( fn_IsNull(sStart) ) sStart = "";

    if( fn_IsNull(sEnd) )  sEnd = "";

    if( fn_IsNull(nStart) ) nStart = 0;

 

    if( sStart == "" )

        pos_start = nStart;

    else{

        pos_start = Pos(sOrg, sStart, nStart);

        if( pos_start < 0 ) return arr;

    }

    if( sEnd == "" )

        pos_end = sOrg.length;

    else {

        pos_end = Pos(sOrg, sEnd, pos_start+sStart.length, nStart);

        if( pos_end < 0 ) return arr;

    }

 

    arr[0] = sOrg.substring(pos_start+sStart.length, pos_end);

    arr[1] = pos_start;

    arr[2] = pos_end;

    

    return arr;

}

 

/******************************************************************************************
 * 기능 : MidCase()함수와 동일하나 Return을 Array로 한다.
 * 인자 : 1. sOrg   : 원래 문자열( 예 : "aaBBbbccdd" )
          2. sStart : 찾고자 하는 시작 문자열(옵션 : Default = "")(예 : "bb" )
                    (만일, sStart=""이면 nStart부터 sEnd까지의 모든 문자열이 return된다.)
          3. sEnd   : 찾고자 하는 끝 문자열 (옵션 : Default = "")( 예 : "dd" )
                    (만일, sEnd=""이면 sStart부터 문자열의 끝까지의 모든 문자열이 return된다.)
          4. nStart : 검색 시작위치 (옵션 : Default=0) ( 예 : 1 )
 * 리턴 : - 성공
              Array[0] = 가운데 글자 ( 예 : "bbcc" )
              Array[1] = sStart의 위치 ( 예 : 2 )
              Array[2] = sEnd의 위치 ( 예 : 8 )
          - 실패
              Array[0] = ""
              Array[1] = -1
              Array[2] = -1
 * 예문 :
 * 참고 : sStart, sEnd의 위치를 알아내려면 다시한번 찾아야 하므로 속도 때문에 만듬
 *****************************************************************************************/

function fn_AMidCase(sOrg, sStart, sEnd, nStart)

{

    var pos_start, pos_end, ret_str;

    var arr = new Array("",-1,-1);

 

    if( fn_IsNull(sOrg) )  return "";

    if( fn_IsNull(sStart) ) sStart = "";

    if( fn_IsNull(sEnd) )  sEnd = "";

    if( fn_IsNull(nStart) ) nStart = 0;

 

    if( sStart == "" )

        pos_start = nStart;

    else {

        pos_start = PosCase(sOrg, sStart, nStart);

        if( pos_start < 0 ) return arr;

    }

 

    if( sEnd == "" )

        pos_end = sOrg.length;

    else{

        pos_end = PosCase(sOrg, sEnd, pos_start+sStart.length, nStart);

        if( pos_end < 0 ) return arr;

    }

 

    arr[0] = sOrg.substring(pos_start+sStart.length, pos_end);

    arr[1] = pos_start;

    arr[2] = pos_end;

    

    return arr;

}

 

 

☞  

 

☞  

 
 
 
 

  

'Nexacro-Function > String' 카테고리의 다른 글

Nexacro.String - 문자열 삭제.추가  (0) 2017.01.28
Nexacro.String - 문자열 치환  (0) 2017.01.28
Nexacro.String - token 추출  (0) 2017.01.28
Nexacro.String - padding  (0) 2017.01.28
Nexacro.String - Trim  (0) 2017.01.28
Posted by 농부지기
,

[ Nexacro.String -  token 추출 ]

 


/******************************************************************************************
 * 기능 : 문자열에서  토큰값 찾기
 * 인자 : sVal - 찾을 문자열
 *         sStartToken - 시작 토큰값
 *         sEndToken   - 종료 토큰값 (만약 종료 토큰을 못찾으면  마지막 값까지 찾아서 return)
 * 리턴 : 토큰에 대한 결과값
 * 예문 : gfn_TokenParsing1("NAME=김상무,DEPT=인사부,", "NAME=", ',')
 *****************************************************************************************/

function gfn_TokenParsing(sVal, sStartToken, sEndToken)

{

    var nStartPos;

    var nEndPos  ;

    

    if (gfn_IsNull(sEndToken)) sEndToken = ',';

    

    // 1. 시작 token

    nStartPos = sVal.indexOf(sStartToken);

    if (nStartPos < 0) return ''

    

    // 2. 종료 token

    if (gfn_IsNull(sEndToken)){

        nEndPos = String(sVal).length;

    }else{

        nEndPos = sVal.indexOf(sEndToken  , nStartPos);

        

        if (nEndPos < 0) nEndPos = String(sVal).length;

    }

    

    if (nEndPos < 0) return '';

    

    var rtn = sVal.substring(nStartPos + sStartToken.length, nEndPos).trim();

    

    if (gfn_IsNull(rtn)) rtn = '';

 

    return rtn;

}

 

/******************************************************************************************
 * 기능 : 문자열에서  토큰값 위치 찾기
 * 인자 : sVal   - 문자열
 *         sToken - 찾을 토큰
 *         nSeq   - 해당 동일 토큰이 여러개 존재 할 경우 몇번째 토큰을 찾을 순서
 * 리턴 : 토큰에 대한 위치
 * 예문 :
 *****************************************************************************************/

function gfn_TokenPosition(sVal, sToken, nSeq)

{

    var nStart=0;

    var nPos;

    

    sVal = sVal.toString();

    for(var i=1; i<=nSeq; i++){

        nPos = sVal.indexOf(sToken, nStart);

        nStart = nPos + sToken.length;

    }

    

    return nPos;

}

 

 

☞  

 

☞  

 
 
 
 

  

 

'Nexacro-Function > String' 카테고리의 다른 글

Nexacro.String - 문자열 치환  (0) 2017.01.28
Nexacro.String - 문자열 찾기  (0) 2017.01.28
Nexacro.String - padding  (0) 2017.01.28
Nexacro.String - Trim  (0) 2017.01.28
Nexacro.String - 문자 검증  (0) 2017.01.28
Posted by 농부지기
,

[ Nexacro.String -  padding ]

 


/******************************************************************************************
 * 기능 : 문자열이 지정된 길이가 되도록 왼쪽을 채우는 함수
 * 인자 :
 * 리턴 :
 * 예문 : gfn_LPad("abc", "*", 5)
 *****************************************************************************************/

function gfn_LPad(strString, strPadChar, nCount)

{

    var rtnStr = "";

    nCount = parseInt(nCount);

 

    if(gfn_GetLength(strString) < nCount) {

        var tmpStrPad = "";

        var cnt = nCount - gfn_GetLength(strString);

        for(var i=0; i<cnt; i++) {

            tmpStrPad += strPadChar;

        }

        

        rtnStr = tmpStrPad + strString;

    } else {

        rtnStr = strString

    }

 

    return rtnStr;

}

/******************************************************************************************
 * 기능 : 문자열이 지정된 길이가 되도록 오른쪽을 채우는 함수
 * 인자 :
 * 리턴 :
 * 예문 :  gfn_RPad("abc", "*", 5)
 *****************************************************************************************/

function gfn_RPad(strString, strPadChar, nCount)

{

    var rtnStr = "";

    nCount = parseInt(nCount);

    if(strString.length < nCount) {

        var tmpStrPad = "";

        var cnt = nCount - strString.length;

        for(var i=0; i<cnt; i++) {

            tmpStrPad += strPadChar;

        }

        

        rtnStr = strString + tmpStrPad;

    } else {

        rtnStr = strString

    }

 

    return rtnStr;

}

/******************************************************************************************
 * 기      능 : 문자 앞쪽 앞, 뒤쪽에 공백을 채워서 return
 * 인      자 : psValue - 적용값
                nMaxLen - 총자리수
                sGubn   - 앞쪽, 뒤쪽 구분 (없으면 뒤쪽)
 *****************************************************************************************/

function gfn_Padding(psValue, nMaxLen, sGubn){

    var nLen = psValue.length;

    

    if (nMaxLen < nLen) return psValue;

    

    for(var ii=0; ii<nMaxLen-nLen; ii++){

        if (sGubn == "LEFT")

            psValue = ' ' + psValue;

        else

            psValue += ' ';

    }

    return psValue;

}

☞  

 

'Nexacro-Function > String' 카테고리의 다른 글

Nexacro.String - 문자열 치환  (0) 2017.01.28
Nexacro.String - 문자열 찾기  (0) 2017.01.28
Nexacro.String - token 추출  (0) 2017.01.28
Nexacro.String - Trim  (0) 2017.01.28
Nexacro.String - 문자 검증  (0) 2017.01.28
Posted by 농부지기
,

[ Nexacro.String -  Trim ]

 


/******************************************************************************************
 * 기능 : 입력된 문자열의 좌우측 공백을 제거한 문자열을 구함.
 * 인자 : arg(좌우측 공백문자를 제거하려는 문자열)
 * 리턴 : 입력된 문자열에서 좌우측 공백이 제거된 문자열
 * 예문 :
 *****************************************************************************************/

function gfn_Trim(arg)

{

    if (arg == null) { return ""; }

    var sArg = arg.toString();

    return sArg.replace(/(^\s*)|(\s*$)/g, "");

}

 

/******************************************************************************************
 * 기능 : 입력된 문자열의 왼쪽 공백을 제거한 문자열을 구함.
 * 인자 : 왼쪽 공백문자를 제거하려는 문자열
 * 리턴 : 입력된 문자열에서 왼쪽 공백이 제거된 문자열
 * 예문 :
 *****************************************************************************************/

function gfn_Ltrim(arg)

{

    var sArg = arg.toString();

    return sArg.replace(/(^\s*)/, "");

}

 

/******************************************************************************************
 * 기능 : 입력된 문자열의 오른쪽 공백을 제거한 문자열을 구함.
 * 인자 : 오른쪽 공백문자를 제거하려는 문자열
 * 리턴 : 입력된 문자열에서 오른쪽 공백이 제거된 문자열
 * 예문 :
 *****************************************************************************************/

function gfn_Rtrim(arg)

{

    var sArg = arg.toString();

    return sArg.replace(/(\s*$)/, "");

}

 

 

☞  

 

☞  

 
 
 
 

  

'Nexacro-Function > String' 카테고리의 다른 글

Nexacro.String - 문자열 치환  (0) 2017.01.28
Nexacro.String - 문자열 찾기  (0) 2017.01.28
Nexacro.String - token 추출  (0) 2017.01.28
Nexacro.String - padding  (0) 2017.01.28
Nexacro.String - 문자 검증  (0) 2017.01.28
Posted by 농부지기
,

[ Nexacro.String -  문자 검증  ]

 

 


/******************************************************************************************
 * 기능 : 문자열이 알파벳(a~z, A~Z)만으로 구성되어 있는지 체크
 * 인자 : sValue - 체크할 문자열 ( 예 : "aAzZ" )
 * 리턴 : - 성공 = 알파벳만 있는경우 true
           - 실패 = 알파벳이 아닌 글자가 하나라도 있는 경우 false
 * 예문 :
 *****************************************************************************************/

function gfn_IsAlpha(sValue)

{

    if (gfn_IsNull(sValue)) return false;

 

    if (sValue.search("[^A-Za-z]") >= 0)

        return false;

    else

        return true;

}

 

/******************************************************************************************
 * 기능 : 문자열이 알파벳(a~z, A~Z), 숫자만으로 구성되어 있는지 체크
 * 인자 : sValue - 체크할 문자열 ( 예 : "aAzZ09" )
 * 리턴 : - 성공 = 알파벳, 숫자만 있는경우 true
           - 실패 = 알파벳, 숫자가 아닌 글자가 하나라도 있는 경우 false
 * 예문 :
 *****************************************************************************************/

function gfn_IsAlphaNumber(sValue)

{

    if (gfn_IsNull(sValue))  return false;

 

    if (sValue.search("[^A-Za-z0-9]") >= 0)

        return false;

    else

        return true;

}

 

/**
* 입력값이 알파벳인지 체크
* 아래 isAlphabet() 부터 isNumComma()까지의 메소드가
* 자주 쓰이는 경우에는 var chars 변수를
* global 변수로 선언하고 사용하도록 한다.
* ex) var uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
*     var lowercase = "abcdefghijklmnopqrstuvwxyz";
*     var number    = "0123456789";
*     function isAlphaNum(input) {
*         var chars = uppercase + lowercase + number;
*         return containsCharsOnly(input,chars);
*     }
*/

function isAlphabet(input) {

    var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

    return containsCharsOnly(input,chars);

}

 

/**
* 입력값이 알파벳 대문자인지 체크
*/

function isUpperCase(input) {

    var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

    return containsCharsOnly(input,chars);

}

 

/**
* 입력값이 알파벳 소문자인지 체크
*/

function isLowerCase(input) {

    var chars = "abcdefghijklmnopqrstuvwxyz";

    return containsCharsOnly(input,chars);

}

/******************************************************************************************
 * 기능 : 문자열이 한글로만 구성되어 있는지 체크
 * 인자 : sValue - 체크할 문자열 ( 예 : "가나다" )
 * 리턴 : - 성공 = 한글만 있는경우 true
          - 실패 = 한글이 아닌 글자가 하나라도 있는 경우 false
 * 예문 :
 *****************************************************************************************/

function gfn_IsKor(sValue)
{
    if (gfn_IsNull(sValue))  return false;
    for (var i=0; i<sValue.length; i++)
    {
        if (!((sValue.charCodeAt(i) > 0x3130 && sValue.charCodeAt(i) < 0x318F) || (sValue.charCodeAt(i) >= 0xAC00 && sValue.charCodeAt(i) <= 0xD7A3)))
            return false;
    }
    return true;
}

 

 


/*******************************************************************************
 ★ 설명
    문자열이 숫자형식에 맞는지 여부 체크
 ★ Parameter
    1. sNum   : 체크할 문자열숫자 ( 예 : "-1234.56" ) (단, ","가 들어있으면 안 됨)
 ★ return
    - 숫자형식에 맞는경우 = true
    - 숫자형식에 맞지않는 경우 = false
 ******************************************************************************/

function fn_IsNum(sNum)

{

 var c;

 var point_cnt=0;

 var ret=true;

 

 if( fn_IsNull(sNum) )  return false;

 

 for( i = 0 ; i < sNum.length ; i++ )

 {

  c = sNum.charAt(i);

  if( i == 0 && ( c == "+" || c == "-" ) );

  else if( c >= "0" && c <= "9" );

  else if( c == "." )

  {

   point_cnt++;

   if( point_cnt > 1 )

   {

    ret = false;

    break;

   }

  }

  else

  {

   ret = false;

   break;

  }

 }

 return ret;

}

 

/**
* 입력값에 숫자만 있는지 체크
*/

function isNumber(input) {

    var chars = "0123456789";

    return containsCharsOnly(input,chars);

}

/**
* 입력값이 알파벳,숫자로 되어있는지 체크
*/

function isAlphaNum(input) {

    var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

    return containsCharsOnly(input,chars);

}

 

/**
* 입력값이 숫자,대시(-)로 되어있는지 체크
*/

function isNumDash(input) {

    var chars = "-0123456789";

    return containsCharsOnly(input,chars);

}

 

/**
* 입력값이 숫자,콤마(,)로 되어있는지 체크
*/

function isNumComma(input) {

    var chars = ",0123456789";

    return containsCharsOnly(input,chars);

}

 

/**
* 입력값이 사용자가 정의한 포맷 형식인지 체크
* 자세한 format 형식은 자바스크립트의 'regular expression'을 참조
*/

function isValidFormat(input,format) {

    if (input.value.search(format) != -1) {

        return true; //올바른 포맷 형식

    }

    return false;

}

 

 

/**
* 입력값이 이메일 형식인지 체크
* ex) if (!isValidEmail(form.email)) {
*         alert("올바른 이메일 주소가 아닙니다.");
*     }
*/

function isValidEmail(input) {

//    var format = /^(\S+)@(\S+)\.([A-Za-z]+)$/;

    var format = /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/;

    return isValidFormat(input,format);

}

 

/**
* 입력값이 전화번호 형식(숫자-숫자-숫자)인지 체크
*/

function isValidPhone(input) {

    var format = /^(\d+)-(\d+)-(\d+)$/;

    return isValidFormat(input,format);

}

 
 
 
 

  

 

'Nexacro-Function > String' 카테고리의 다른 글

Nexacro.String - 문자열 치환  (0) 2017.01.28
Nexacro.String - 문자열 찾기  (0) 2017.01.28
Nexacro.String - token 추출  (0) 2017.01.28
Nexacro.String - padding  (0) 2017.01.28
Nexacro.String - Trim  (0) 2017.01.28
Posted by 농부지기
,

[ Nexacro.Date -  일자 기타  ]

 


- 양력 nYear에 해당하는 년도의 법정 공휴일(양력) List 모두 구하기
 

/*******************************************************************************
 ★ 설명
    양력 nYear에 해당하는 년도의 법정 공휴일(양력) List 모두 구하기
 ★ parameter
    nYear : nYear에 해당하는 년도 ( 예 : 2012 )
 ★ return
    - 성공 = 공휴일 List Array ==> 각 Array[i]="yyyyMMdd공휴일명" 으로 return된다.
             ( 예 : Array[0] = "20120101신정" )
    - 실패 = 빈 Array
 ★ 목적    
    1. Solar2Lunar()가 너무느려서 만들었음
******************************************************************************/
 

function GetHolidays(nYear)

{

 var nYear;

 var aHoliday = new Array();

 

 if( fn_IsNull(nYear) )  return aHoliday;

 /////// 음력 체크

 // 구정

 aHoliday[0] = Lunar2Solar( "0" + (nYear-1) + "1230" ) + "설날";

 aHoliday[1] = AddDate(aHoliday[0], 1) + "설날";

 aHoliday[2] = AddDate(aHoliday[1], 1) + "설날";

 // 석가탄신일

 aHoliday[3] = Lunar2Solar( "0" + nYear + "0408" ) + "석가탄신일";

 // 추석

 aHoliday[4] = Lunar2Solar( "0" + nYear + "0814" ) + "추석";

 aHoliday[5] = AddDate(aHoliday[4], 1) + "추석";

 aHoliday[6] = AddDate(aHoliday[5], 1) + "추석";

 /////// 양력 체크

 aHoliday[7] = nYear+"0101" + "신정";

 aHoliday[8] = nYear+"0301" + "삼일절";

 aHoliday[9] = nYear+"0505" + "어린이날";

 aHoliday[10] = nYear+"0606" + "현충일";  

 aHoliday[11] = nYear+"0815" + "광복절";   

 aHoliday[12] = nYear+"1225" + "성탄절";   

 

//// (2013.08.30) 누락된 항목 추가

 aHoliday[13] = nYear+"1003" + "개천절";   

 aHoliday[14] = nYear+"1009" + "한글날";   

 

 return aHoliday.sort();

}

 

☞  

 

☞  

 
 
 
 

  

Posted by 농부지기
,

[ Nexacro.Date -  윤달.양력.음력. ]

 


- 윤년여부 확인
- 음력을 양력으로 변환해주는 함수 (처리가능 기간  1841 - 2043년)
- 각 월별 음력 기준 정보를 처리하는 함수(처리가능 기간  1841 - 2043년)
- 나이 확인
-
연말정산용 나이계산

 

 

 

/******************************************************************************************
 * 기능 : 윤년여부 확인
 * 인자 : sDate : yyyyMMdd형태의 날짜 ( 예 : "20121122" )
 * 리턴 : - sDate가 윤년인 경우 = true
 *         - sDate가 윤년이 아닌 경우 = false
 *         - sDate가 입력되지 않은 경우 = false
 * 예문 :
 *****************************************************************************************/

function gfn_IsLeapYear(sDate)

{

    var ret;

    var nY;

 

    if( gfn_IsNull(sDate) )    return false;

 

    nY = parseInt(sDate.substring(0,4), 10);

 

    if ((nY % 4) == 0)

    {

        if ((nY % 100) != 0 || (nY % 400) == 0)

            ret = true;

        else

            ret = false;

    }

    else

        ret = false;

 

    return ret;

}

 

/******************************************************************************************
 * 기능 : 음력을 양력으로 변환해주는 함수 (처리가능 기간  1841 - 2043년)
 * 인자 : sDate : Flag(1 Byte)+yyyyMMdd형태의 음력일자 ( 예 : "020121122" )
                  ( Flag : 평달 = "0", 윤달 = "1" )
 * 리턴 : - 성공 = yyyyMMdd형태의 양력일자
 *                  ( Flag : 평달 = "0", 윤달 = "1" )
 *         - 실패 = null
 *                  - 1841 ~ 2043 범위 오류의 경우
 *                  - sDate가 9자리가 아닐경우
 *                  - sDate의 첫자리 Flag가 "0"도 아니고 "1"도 아닌 경우
 * 예문 :
 *****************************************************************************************/

function gfn_Lunar2Solar(sDate)

{

    var sMd = "31,0,31,30,31,30,31,31,30,31,30,31";

    var aMd = new Array();  

    var aBaseInfo = new Array();    

 

    var nLy, nLm, nLd, sLflag;      // 전해온 음력 인자값을 저장할 년, 월, 일, 윤달여부 임시변수

    var nSy, nSm, nSd;              // 계산된 양력 년, 월, 일을 저장할 변수

    var y1, m1, i, j, y2, y3;   // 임시변수 

    var leap;

 

    if( gfn_IsNull(sDate) )         return "";

    if( sDate.length != 9 )     return "";

 

    sLflag = sDate.substr(0,1);

    nLy = parseInt(sDate.substr(1,4), 10);

    nLm = parseInt(sDate.substr(5,2), 10);

    nLd = parseInt(sDate.substr(7,2), 10);

    if( nLy < 1841 || nLy > 2043 )          return "";

    if( sLflag != "0" && sLflag != "1" )    return "";

        

    aBaseInfo = _SolarBase();

    aMd = sMd.split(",");

    if( gfn_IsLeapYear(sDate.substr(1,8)) == true )                 

        aMd[1] = 29;

    else

        aMd[1] = 28;    

        

    y1 = nLy - 1841;

    m1 = nLm - 1;

    leap = 0;

    if( parseInt(aBaseInfo[y1*12 + m1]) > 2 )

        leap = gfn_IsLeapYear(nLy+"0101");

 

    if( leap == 1 )

    {

        switch( parseInt(aBaseInfo[y1*12 + m1]) )

        {

            case 3 : mm = 29;

                    break;

            case 4 : mm = 30;

                    break;

            case 5 : mm = 29;

                    break;

            case 6 : mm = 30;

                    break;

        }

    }

    else

    {

        switch( parseInt(aBaseInfo[y1*12 + m1]) )

        {

            case 1 : mm = 29;

                    break;

            case 2 : mm = 30;

                    break;

            case 3 : mm = 29;

                    break;

            case 4 : mm = 29;

                    break;

            case 5 : mm = 30;

                    break;

            case 6 : mm = 30;

                    break;

        }

    }

 

    td = 0;

    for( i = 0 ; i <= y1 - 1 ; i++ )

    {

        for( j = 0 ; j <= 11 ; j++ )

        {

            switch( parseInt(aBaseInfo[i*12 + j]) )

            {

                case 1 : td = td + 29;

                        break;

                case 2 : td = td + 30;

                        break;

                case 3 : td = td + 58;

                        break;

                case 4 : td = td + 59;

                        break;

                case 5 : td = td + 59;

                        break;

                case 6 : td = td + 60;

                        break;

            }

        }

    }

 

    for( j = 0 ; j <= m1 - 1 ; j++ )

    {

        switch( parseInt(aBaseInfo[y1*12 + j]) )

        {

            case 1 : td = td + 29;

                    break;

            case 2 : td = td + 30;

                    break;

            case 3 : td = td + 58;

                    break;

            case 4 : td = td + 59;

                    break;

            case 5 : td = td + 59;

                    break;

            case 6 : td = td + 60;

                    break;

        }

    }

 

    if( leap == 1 )

    {

        switch( parseInt(aBaseInfo[y1*12 + m1]) )

        {

            case 3 : mm = 29;

                    break;  

            case 4 : mm = 29;

                    break;

            case 5 : mm = 30;

                    break;

            case 6 : mm = 30;

                    break;

        }

    }

 

    td = td + nLd + 22;

 

    if( sLflag == "1" )

    {

        switch( parseInt(aBaseInfo[y1*12 + m1]) )

        {

            case 3 : td = td + 29;

                    break;

            case 4 : td = td + 30;

                    break;

            case 5 : td = td + 29;

                    break;

            case 6 : td = td + 30;

                    break;

        }

    }

 

    y1 = 1840;

    do

    {

        y1 = y1 + 1;

        leap = gfn_IsLeapYear(y1+"0101");

 

        if( leap == 1 )

            y2 = 366;

        else

            y2 = 365;

 

        if( td <= y2 )

            break;

            

        td = td - y2;

    }

    while(1);

 

    nSy = y1;

    aMd[1] = y2 - 337;

    m1 = 0;

    do

    {

        m1 = m1 + 1;

        if( td <= parseInt(aMd[m1-1]) )

            break;

        td = td - parseInt(aMd[m1-1]);

    }

    while(1);

 

    nSm = m1;

    nSd = td;

    y3 = nSy;

    td = y3 * 365 + parseInt(y3/4) - parseInt(y3/100) + parseInt(y3/400);

    for( i = 0 ; i <= nSm - 1 ; i++ )

        td = td + parseInt(aMd[i]);

 

    td = td + nSd;

 

    return y3 + gfn_Right("0" + nSm, 2)+gfn_Right("0" + nSd, 2);

}

 

/******************************************************************************************
 * 기능 : 각 월별 음력 기준 정보를 처리하는 함수(처리가능 기간  1841 - 2043년)
          단, 내부에서 사용하는 함수임
 * 인자 : 없음
 * 리턴 : 성공 = 음력 기준정보
 * 예문 :
 *****************************************************************************************/

function _SolarBase()

{

    var kk;

 

    //1841

    kk = "1,2,4,1,1,2,1,2,1,2,2,1,";

    kk += "2,2,1,2,1,1,2,1,2,1,2,1,";

    kk += "2,2,2,1,2,1,4,1,2,1,2,1,";

    kk += "2,2,1,2,1,2,1,2,1,2,1,2,";

    kk += "1,2,1,2,2,1,2,1,2,1,2,1,";

    kk += "2,1,2,1,5,2,1,2,2,1,2,1,";

    kk += "2,1,1,2,1,2,1,2,2,2,1,2,";

    kk += "1,2,1,1,2,1,2,1,2,2,2,1,";

    kk += "2,1,2,3,2,1,2,1,2,1,2,2,";

    kk += "2,1,2,1,1,2,1,1,2,2,1,2,";

    //1851

    kk += "2,2,1,2,1,1,2,1,2,1,5,2,";

    kk += "2,1,2,2,1,1,2,1,2,1,1,2,";

    kk += "2,1,2,2,1,2,1,2,1,2,1,2,";

    kk += "1,2,1,2,1,2,5,2,1,2,1,2,";

    kk += "1,1,2,1,2,2,1,2,2,1,2,1,";

    kk += "2,1,1,2,1,2,1,2,2,2,1,2,";

    kk += "1,2,1,1,5,2,1,2,1,2,2,2,";

    kk += "1,2,1,1,2,1,1,2,2,1,2,2,";

    kk += "2,1,2,1,1,2,1,1,2,1,2,2,";

    kk += "2,1,6,1,1,2,1,1,2,1,2,2,";

    //1861

    kk += "1,2,2,1,2,1,2,1,2,1,1,2,";

    kk += "2,1,2,1,2,2,1,2,2,3,1,2,";

    kk += "1,2,2,1,2,1,2,2,1,2,1,2,";

    kk += "1,1,2,1,2,1,2,2,1,2,2,1,";

    kk += "2,1,1,2,4,1,2,2,1,2,2,1,";

    kk += "2,1,1,2,1,1,2,2,1,2,2,2,";

    kk += "1,2,1,1,2,1,1,2,1,2,2,2,";

    kk += "1,2,2,3,2,1,1,2,1,2,2,1,";

    kk += "2,2,2,1,1,2,1,1,2,1,2,1,";

    kk += "2,2,2,1,2,1,2,1,1,5,2,1,";

    //1871

    kk += "2,2,1,2,2,1,2,1,2,1,1,2,";

    kk += "1,2,1,2,2,1,2,1,2,2,1,2,";

    kk += "1,1,2,1,2,4,2,1,2,2,1,2,";

    kk += "1,1,2,1,2,1,2,1,2,2,2,1,";

    kk += "2,1,1,2,1,1,2,1,2,2,2,1,";

    kk += "2,2,1,1,5,1,2,1,2,2,1,2,";

    kk += "2,2,1,1,2,1,1,2,1,2,1,2,";

    kk += "2,2,1,2,1,2,1,1,2,1,2,1,";

    kk += "2,2,4,2,1,2,1,1,2,1,2,1,";

    kk += "2,1,2,2,1,2,2,1,2,1,1,2,";

    //1881

    kk += "1,2,1,2,1,2,5,2,2,1,2,1,";

    kk += "1,2,1,2,1,2,1,2,2,1,2,2,";

    kk += "1,1,2,1,1,2,1,2,2,2,1,2,";

    kk += "2,1,1,2,3,2,1,2,2,1,2,2,";

    kk += "2,1,1,2,1,1,2,1,2,1,2,2,";

    kk += "2,1,2,1,2,1,1,2,1,2,1,2,";

    kk += "2,2,1,5,2,1,1,2,1,2,1,2,";

    kk += "2,1,2,2,1,2,1,1,2,1,2,1,";

    kk += "2,1,2,2,1,2,1,2,1,2,1,2,";

    kk += "1,5,2,1,2,2,1,2,1,2,1,2,";

    //1891

    kk += "1,2,1,2,1,2,1,2,2,1,2,2,";

    kk += "1,1,2,1,1,5,2,2,1,2,2,2,";

    kk += "1,1,2,1,1,2,1,2,1,2,2,2,";

    kk += "1,2,1,2,1,1,2,1,2,1,2,2,";

    kk += "2,1,2,1,5,1,2,1,2,1,2,1,";

    kk += "2,2,2,1,2,1,1,2,1,2,1,2,";

    kk += "1,2,2,1,2,1,2,1,2,1,2,1,";

    kk += "2,1,5,2,2,1,2,1,2,1,2,1,";

    kk += "2,1,2,1,2,1,2,2,1,2,1,2,";

    kk += "1,2,1,1,2,1,2,5,2,2,1,2,";

    //1901

    kk += "1,2,1,1,2,1,2,1,2,2,2,1,";

    kk += "2,1,2,1,1,2,1,2,1,2,2,2,";

    kk += "1,2,1,2,3,2,1,1,2,2,1,2,";

    kk += "2,2,1,2,1,1,2,1,1,2,2,1,";

    kk += "2,2,1,2,2,1,1,2,1,2,1,2,";

    kk += "1,2,2,4,1,2,1,2,1,2,1,2,";

    kk += "1,2,1,2,1,2,2,1,2,1,2,1,";

    kk += "2,1,1,2,2,1,2,1,2,2,1,2,";

    kk += "1,5,1,2,1,2,1,2,2,2,1,2,";

    kk += "1,2,1,1,2,1,2,1,2,2,2,1,";

    //1911

    kk += "2,1,2,1,1,5,1,2,2,1,2,2,";

    kk += "2,1,2,1,1,2,1,1,2,2,1,2,";

    kk += "2,2,1,2,1,1,2,1,1,2,1,2,";

    kk += "2,2,1,2,5,1,2,1,2,1,1,2,";

    kk += "2,1,2,2,1,2,1,2,1,2,1,2,";

    kk += "1,2,1,2,1,2,2,1,2,1,2,1,";

    kk += "2,3,2,1,2,2,1,2,2,1,2,1,";

    kk += "2,1,1,2,1,2,1,2,2,2,1,2,";

    kk += "1,2,1,1,2,1,5,2,2,1,2,2,";

    kk += "1,2,1,1,2,1,1,2,2,1,2,2,";

    //1921

    kk += "2,1,2,1,1,2,1,1,2,1,2,2,";

    kk += "2,1,2,2,3,2,1,1,2,1,2,2,";

    kk += "1,2,2,1,2,1,2,1,2,1,1,2,";

    kk += "2,1,2,1,2,2,1,2,1,2,1,1,";

    kk += "2,1,2,5,2,1,2,2,1,2,1,2,";

    kk += "1,1,2,1,2,1,2,2,1,2,2,1,";

    kk += "2,1,1,2,1,2,1,2,2,1,2,2,";

    kk += "1,5,1,2,1,1,2,2,1,2,2,2,";

    kk += "1,2,1,1,2,1,1,2,1,2,2,2,";

    kk += "1,2,2,1,1,5,1,2,1,2,2,1,";

    //1931

    kk += "2,2,2,1,1,2,1,1,2,1,2,1,";

    kk += "2,2,2,1,2,1,2,1,1,2,1,2,";

    kk += "1,2,2,1,6,1,2,1,2,1,1,2,";

    kk += "1,2,1,2,2,1,2,2,1,2,1,2,";

    kk += "1,1,2,1,2,1,2,2,1,2,2,1,";

    kk += "2,1,4,1,2,1,2,1,2,2,2,1,";

    kk += "2,1,1,2,1,1,2,1,2,2,2,1,";

    kk += "2,2,1,1,2,1,4,1,2,2,1,2,";

    kk += "2,2,1,1,2,1,1,2,1,2,1,2,";

    kk += "2,2,1,2,1,2,1,1,2,1,2,1,";

    //1941

    kk += "2,2,1,2,2,4,1,1,2,1,2,1,";

    kk += "2,1,2,2,1,2,2,1,2,1,1,2,";

    kk += "1,2,1,2,1,2,2,1,2,2,1,2,";

    kk += "1,1,2,4,1,2,1,2,2,1,2,2,";

    kk += "1,1,2,1,1,2,1,2,2,2,1,2,";

    kk += "2,1,1,2,1,1,2,1,2,2,1,2,";

    kk += "2,5,1,2,1,1,2,1,2,1,2,2,";

    kk += "2,1,2,1,2,1,1,2,1,2,1,2,";

    kk += "2,2,1,2,1,2,3,2,1,2,1,2,";

    kk += "2,1,2,2,1,2,1,1,2,1,2,1,";

    //1951

    kk += "2,1,2,2,1,2,1,2,1,2,1,2,";

    kk += "1,2,1,2,4,2,1,2,1,2,1,2,";

    kk += "1,2,1,1,2,2,1,2,2,1,2,2,";

    kk += "1,1,2,1,1,2,1,2,2,1,2,2,";

    kk += "2,1,4,1,1,2,1,2,1,2,2,2,";

    kk += "1,2,1,2,1,1,2,1,2,1,2,2,";

    kk += "2,1,2,1,2,1,1,5,2,1,2,2,";

    kk += "1,2,2,1,2,1,1,2,1,2,1,2,";

    kk += "1,2,2,1,2,1,2,1,2,1,2,1,";

    kk += "2,1,2,1,2,5,2,1,2,1,2,1,";

    //1961

    kk += "2,1,2,1,2,1,2,2,1,2,1,2,";

    kk += "1,2,1,1,2,1,2,2,1,2,2,1,";

    kk += "2,1,2,3,2,1,2,1,2,2,2,1,";

    kk += "2,1,2,1,1,2,1,2,1,2,2,2,";

    kk += "1,2,1,2,1,1,2,1,1,2,2,1,";

    kk += "2,2,5,2,1,1,2,1,1,2,2,1,";

    kk += "2,2,1,2,2,1,1,2,1,2,1,2,";

    kk += "1,2,2,1,2,1,5,2,1,2,1,2,";

    kk += "1,2,1,2,1,2,2,1,2,1,2,1,";

    kk += "2,1,1,2,2,1,2,1,2,2,1,2,";

    //1971

    kk += "1,2,1,1,5,2,1,2,2,2,1,2,";

    kk += "1,2,1,1,2,1,2,1,2,2,2,1,";

    kk += "2,1,2,1,1,2,1,1,2,2,2,1,";

    kk += "2,2,1,5,1,2,1,1,2,2,1,2,";

    kk += "2,2,1,2,1,1,2,1,1,2,1,2,";

    kk += "2,2,1,2,1,2,1,5,2,1,1,2,";

    kk += "2,1,2,2,1,2,1,2,1,2,1,1,";

    kk += "2,2,1,2,1,2,2,1,2,1,2,1,";

    kk += "2,1,1,2,1,6,1,2,2,1,2,1,";

    kk += "2,1,1,2,1,2,1,2,2,1,2,2,";

    //1981

    kk += "1,2,1,1,2,1,1,2,2,1,2,2,";

    kk += "2,1,2,3,2,1,1,2,2,1,2,2,";

    kk += "2,1,2,1,1,2,1,1,2,1,2,2,";

    kk += "2,1,2,2,1,1,2,1,1,5,2,2,";

    kk += "1,2,2,1,2,1,2,1,1,2,1,2,";

    kk += "1,2,2,1,2,2,1,2,1,2,1,1,";

    kk += "2,1,2,2,1,5,2,2,1,2,1,2,";

    kk += "1,1,2,1,2,1,2,2,1,2,2,1,";

    kk += "2,1,1,2,1,2,1,2,2,1,2,2,";

    kk += "1,2,1,1,5,1,2,1,2,2,2,2,";

    //1991

    kk += "1,2,1,1,2,1,1,2,1,2,2,2,";

    kk += "1,2,2,1,1,2,1,1,2,1,2,2,";

    kk += "1,2,5,2,1,2,1,1,2,1,2,1,";

    kk += "2,2,2,1,2,1,2,1,1,2,1,2,";

    kk += "1,2,2,1,2,2,1,5,2,1,1,2,";

    kk += "1,2,1,2,2,1,2,1,2,2,1,2,";

    kk += "1,1,2,1,2,1,2,2,1,2,2,1,";

    kk += "2,1,1,2,3,2,2,1,2,2,2,1,";

    kk += "2,1,1,2,1,1,2,1,2,2,2,1,";

    kk += "2,2,1,1,2,1,1,2,1,2,2,1,";

    //2001

    kk += "2,2,2,3,2,1,1,2,1,2,1,2,";

    kk += "2,2,1,2,1,2,1,1,2,1,2,1,";

    kk += "2,2,1,2,2,1,2,1,1,2,1,2,";

    kk += "1,5,2,2,1,2,1,2,2,1,1,2,";

    kk += "1,2,1,2,1,2,2,1,2,2,1,2,";

    kk += "1,1,2,1,2,1,5,2,2,1,2,2,";

    kk += "1,1,2,1,1,2,1,2,2,2,1,2,";

    kk += "2,1,1,2,1,1,2,1,2,2,1,2,";

    kk += "2,2,1,1,5,1,2,1,2,1,2,2,";

    kk += "2,1,2,1,2,1,1,2,1,2,1,2,";

    //2011

    kk += "2,1,2,2,1,2,1,1,2,1,2,1,";

    kk += "2,1,6,2,1,2,1,1,2,1,2,1,";

    kk += "2,1,2,2,1,2,1,2,1,2,1,2,";

    kk += "1,2,1,2,1,2,1,2,5,2,1,2,";

    kk += "1,2,1,1,2,1,2,2,2,1,2,2,";

    kk += "1,1,2,1,1,2,1,2,2,1,2,2,";

    kk += "2,1,1,2,3,2,1,2,1,2,2,2,";

    kk += "1,2,1,2,1,1,2,1,2,1,2,2,";

    kk += "2,1,2,1,2,1,1,2,1,2,1,2,";

    kk += "2,1,2,5,2,1,1,2,1,2,1,2,";

    //2021

    kk += "1,2,2,1,2,1,2,1,2,1,2,1,";

    kk += "2,1,2,1,2,2,1,2,1,2,1,2,";

    kk += "1,5,2,1,2,1,2,2,1,2,1,2,";

    kk += "1,2,1,1,2,1,2,2,1,2,2,1,";

    kk += "2,1,2,1,1,5,2,1,2,2,2,1,";

    kk += "2,1,2,1,1,2,1,2,1,2,2,2,";

    kk += "1,2,1,2,1,1,2,1,1,2,2,2,";

    kk += "1,2,2,1,5,1,2,1,1,2,2,1,";

    kk += "2,2,1,2,2,1,1,2,1,1,2,2,";

    kk += "1,2,1,2,2,1,2,1,2,1,2,1,";

    //2031

    kk += "2,1,5,2,1,2,2,1,2,1,2,1,";

    kk += "2,1,1,2,1,2,2,1,2,2,1,2,";

    kk += "1,2,1,1,2,1,5,2,2,2,1,2,";

    kk += "1,2,1,1,2,1,2,1,2,2,2,1,";

    kk += "2,1,2,1,1,2,1,1,2,2,1,2,";

    kk += "2,2,1,2,1,4,1,1,2,1,2,2,";

    kk += "2,2,1,2,1,1,2,1,1,2,1,2,";

    kk += "2,2,1,2,1,2,1,2,1,1,2,1,";

    kk += "2,2,1,2,5,2,1,2,1,2,1,1,";

    kk += "2,1,2,2,1,2,2,1,2,1,2,1,";

    //2041

    kk += "2,1,1,2,1,2,2,1,2,2,1,2,";

    kk += "1,5,1,2,1,2,1,2,2,2,1,2,";

    kk += "1,2,1,1,2,1,1,2,2,1,2,2";

 

    var arr = new Array();

    arr = kk.split(",");

 

    return arr;

}

/*******************************************************************************
 ★ 설명
    나이 확인
 ★ parameter
   juminNo: 주민번호 13자리
 ★ return
   - age 나이
 ******************************************************************************/

function gf_getAge(juminNo)

 {

         if(gf_isNull(juminNo)) return;

         

        var today = gf_today().substr(0,4);

         var item = juminNo.substr(0,2);//주민번호의 년도 2자리

         var v_LNum = juminNo.substr(6).toString();

         var v_YY = null;

         

        if (v_LNum.substr(0,1) == '1' ||  v_LNum.substr(0,1) == '2')

                 v_YY  = '19';

         else if (v_LNum.substr(0,1) == '3' ||  v_LNum.substr(0,1) == '4')

                v_YY  = '20';

         

        var age = toNumber(today) - toNumber(v_YY + item + "");

         

        return age;

 }

 

/*******************************************************************************
 ★ 설명
    연말정산용 나이계산
 ★ parameter
   juminNo: 주민번호 13자리
 ★ return
   - age 나이
 ******************************************************************************/

 function gf_getRefAge(juminNo)

 {

         if(gf_isNull(juminNo)) return;

         

        var today = gf_today().substr(0,4);

         var item = juminNo.substr(0,2);//주민번호의 년도 2자리

         var v_LNum = juminNo.substr(6).toString();

         var v_YY = null;

         

        if (v_LNum.substr(0,1) == '1' ||  v_LNum.substr(0,1) == '2')

                 v_YY  = '19';

         else if (v_LNum.substr(0,1) == '3' ||  v_LNum.substr(0,1) == '4')

                v_YY  = '20';

         

        var age = toNumber(today) - toNumber(v_YY + item + "");

         

        return age-1;

 }

 

☞  

 
 
 
 

  

Posted by 농부지기
,

[ Nexacro.Date -  시간 다루기 ]

 

- 시간간의 차이 계산
- 해당 Locale의 오늘 날짜+시간를 가져온다.
- 해당 PC의 오늘 날짜 + 시간을 가져온다.
 

/**********************************************************************************
 * 함수명      : gfn_diffTime
 * 설명        : 두 시간간의 차이 계산
 * argument     : sStartTime(HHmmss형태의 From 시간) ( 예 : "20121122" )
 *              : sEndTime(HHmmss형태의 To 시간) ( 예 : "20121202" )
 *              : sType(구하고자하는 타입(시, 분, 초)) ( 예 : "HH" )
 * return Type : Int
**********************************************************************************/

function gfn_diffTime(sStartTime, sEndTime, sType)

{

    sStartTime = String(sStartTime);

    sEndTime   = String(sEndTime);

    sType      = String(sType);

    var nReturnValue;

    var nFrom_HH = toNumber(sStartTime.substring(0,2));

    var nFrom_mm = toNumber(sStartTime.substring(2,4));

    var nFrom_ss = toNumber(sStartTime.substring(4,6));

    

    var nTo_HH = toNumber(sEndTime.substring(0,2));

    var nTo_mm = toNumber(sEndTime.substring(2,4));

    var nTo_ss = toNumber(sEndTime.substring(4,6));

    

    var nFromTotal_ss = (nFrom_HH*3600)+(nFrom_mm*60)+nFrom_ss;

    var nToTotal_ss = (nTo_HH*3600)+(nTo_mm*60)+nTo_ss;

    

    if(sType=="HH")

    {

        return (Math.floor((nToTotal_ss - nFromTotal_ss)/3600));

    }else if(sType=="mm")

    {

        return (Math.floor((nToTotal_ss - nFromTotal_ss)/60));

    }else if(sType=="ss")

    {

        return (nToTotal_ss - nFromTotal_ss);

    }

}

/******************************************************************************************
 * 기능 : 해당 Locale의 오늘 날짜+시간를 가져온다.
 * 인자 :
 * 리턴 : string
 * 예문 :
 *****************************************************************************************/

function gfn_TodayTime()

{

    var objDate = new Date();

    var ngetTime = objDate.getTime();

    var objTime = new Date(ngetTime);   // objTime는 해당 Locale로 변경됨

 

    var strToday  = objTime.getFullYear() + "";

    strToday += gfn_Right("0" + (objTime.getMonth() + 1), 2);

    strToday += gfn_Right("0" + objTime.getDate(), 2);

    strToday += gfn_Right("0" + objTime.getHours(), 2);

    strToday += gfn_Right("0" + objTime.getMinutes(), 2);

    strToday += gfn_Right("0" + objTime.getSeconds(), 2);

 

    return strToday;

}

 

/*******************************************************************************
 ★ 설명
    해당 PC의 오늘 날짜 + 시간을 가져온다.
 ★ parameter
 ★ return
    - 성공 = yyyyMMddhhmiss형태의 오늘 날짜 ( 예 : "20121122223010" )
    - 실패 = 없음
******************************************************************************/

function fn_TodayTime()

{

 var strToday = "";

 var objDate = new Date();

 var sToday  = objDate.getFullYear().toString();

 

 sToday += Right("0" + (objDate.getMonth() + 1), 2);

 sToday += Right("0" + objDate.getDate(), 2);

 sToday += Right("0" + objDate.getHours(), 2);

 sToday += Right("0" + objDate.getMinutes(), 2);

 sToday += Right("0" + objDate.getSeconds(), 2);

 //strToday += objDate.getMilliseconds();

 return sToday;

}

☞  

 

☞  

 
 
 
 

  

Posted by 농부지기
,

[ Nexacro.Date -  일자 얻기 및 계산하기 ]

 


- 해당 Locale의 오늘 날짜를 가져온다
- 해당 PC의 오늘 날짜를 가져온다.
- 력된 날자에 OffSet 으로 지정된 만큼의 일을 더한다.
- 입력된 날자에 nOffset 으로 지정된 만큼의 일을 증감한다.

- 2개의 날짜간의 Day count.
- 2개의 날짜간의 일수 계산
- 문자를 날짜로 변환하는 함수.
- 문자를 날짜로 변환하는 함수.
- 날짜를 문자로 변환하는 함수.
 
- 입력된 날자로부터 요일을 구함
- 입력된 날자로부터 요일을 구함
 
- 해당월의 마지막 날짜를 숫자로 구하기
- 해당월의 마지막 날짜를 yyyyMMdd형태로 구하기
 
- 해당월의 마지막 날짜를 yyyyMMdd형태로 구하기
- Diff만큼 후 날짜 구하는 함수.
 
- Diff만큼 후 날짜 구하는 함수.
- 숫자로 된 년, 월, 일을 yyyyMMdd형의 문자열 날짜로 만든다.
- Date기본 Format( = yyyyMMdd[hhmiss])를 XP Date기본 Format( = yyyy-MM-dd[ hh:mi:ss] ) 으로 바꾸어
- 날짜 더하거나 뺀값을 반환하는 메소드

/******************************************************************************************
 * 기능 : 해당 Locale의 오늘 날짜를 가져온다.
 * 인자 :
 * 리턴 : string
 * 예문 :
 *****************************************************************************************/

function gfn_Today()

{

    var objDate = new Date();

    var ngetTime = objDate.getTime();

    

    objDate.setTime(ngetTime);   // objDate는 해당 Locale로 변경됨

 

    var strToday  = objDate.getFullYear() + "";

    strToday += gfn_Right("0" + (objDate.getMonth() + 1), 2);

    strToday += gfn_Right("0" + objDate.getDate(), 2);

 

    return strToday;

}

 

 

/*******************************************************************************
 ★ 설명
    해당 PC의 오늘 날짜를 가져온다.
 ★ parameter
 ★ return
    - 성공 = yyyyMMdd형태의 오늘 날짜 ( 예 : "20121122" )
    - 실패 = 없음
******************************************************************************/

function fn_Today()

{

 var sToday = "";

 var objDate = new Date();

 var sToday  = objDate.getFullYear().toString();

 sToday += Right("0" + (objDate.getMonth() + 1), 2);

 sToday += Right("0" + objDate.getDate(), 2);

 

 return sToday;

}

/******************************************************************************************
 * 기능 : 입력된 날자에 OffSet 으로 지정된 만큼의 일을 더한다.
 * 인자 : psDate ('yyyyMMdd' 형태로 표현된 날자)
 *         pnOffSet (날짜로부터 증가 감소값). 지정하지 않으면 Default Value = 1 로 적용됩니다)
 * 리턴 : Date에 nOffset이 더해진 결과를 'yyyyMMdd'로 표현된 날자.
 * 예문 :
 *****************************************************************************************/

function gfn_AddDate(psDate, pnOffSet){

    if (gfn_IsNull(pnOffSet)) pnOffSet = 1;

 

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

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

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

    d.setDate( toNumber(psDate.substr(6, 2)));

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

    

    d.addDate(pnOffSet);

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

}


/**********************************************************************************
 ★ 설명
    입력된 날자에 nOffset 으로 지정된 만큼의 일을 증감한다.
 ★ parameter
    1. sDate : 날짜 ( 예 : "20121122" )
    2. nOffset : 일 증감값 ( 예 : 10 또는 -10 )
 ★ return
    - 성공 = yyyyMMdd형태의 증감된 날짜 ( 예 : "20121202" 또는 "20121112" )
    - 실패 = ""
**********************************************************************************/

function fn_AddDate(sDate, nOffset)

{

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

 

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

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

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

   

   return MakeDate(nYear, nMonth, nDate);

}
 

/******************************************************************************************
 * 기능 : 2개의 날짜간의 Day count
 * 인자 : sFdate   시작일자
 *         sTdate   종료일자
 * 리턴 : 양 일자간의 Day count
 * 예문 : gfn_GetDiffDay("20090808", "20091001")
 *****************************************************************************************/

 function gfn_GetDiffDay(sFdate, sTdate)

 {

    sFdate = new String(sFdate);

    sFdate = sFdate.replace(" ", "").replace("-", "").replace("/", "");

    sTdate = new String(sTdate);

    sTdate = sTdate.replace(" ", "").replace("-", "").replace("/", "");

 

    sFdate = gfn_Left(sFdate, 8);

    sTdate = gfn_Left(sTdate, 8);

    

    if (sFdate.length != 8 || sTdate.length != 8

         || isNumeric(sFdate) == false || isNumeric(sTdate) == false

         || gfn_GetDay(sFdate) == -1 || gfn_GetDay(sTdate) == -1) {

        return null;

    }

 

    var nDiffDate = gfn_StrToDate(sTdate) - gfn_StrToDate(sFdate);

    var nDay      = 1000*60*60*24;

 

    nDiffDate = parseInt(nDiffDate/nDay);

    if (nDiffDate < 0) {

        nDiffDate = nDiffDate - 1;

    } else {

        nDiffDate = nDiffDate + 1;

    }

 

    return nDiffDate;

}

/*******************************************************************************
 ★ 설명
     2개의 날짜간의 일수 계산
 ★ parameter
    1. sStartDate : yyyyMMdd형태의 From 일자 ( 예 : "20121122" )
    2. sEndDate   : yyyyMMdd형태의 To 일자 ( 예 : "20121202" )
 ★ return
    - 성공 = 숫자 형태의 차이일수  ( 예 : 10 )
             단, sEndDate < sStartDate이면 음수가 return된다.
    - 실패 = NaN
 ******************************************************************************/

function fn_DiffDate(sStartDate, sEndDate)

{

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

 

    var vFromDate = new Date(parseInt(sEndDate.substring(0,4),  10), parseInt(sEndDate.substring(4,6)-1,  10), parseInt(sEndDate.substring(6,8), 10));

    var vToDate = new Date(parseInt(sStartDate.substring(0,4),  10), parseInt(sStartDate.substring(4,6)-1,  10), parseInt(sStartDate.substring(6,8), 10));

    

    return parseInt((vFromDate - vToDate)/(1000*60*60*24));

}

 

 

/******************************************************************************************
 * 기능 : 문자를 날짜로 변환하는 함수.
 * 인자 : sDate 8자리 형식으로된 날짜. yyyyMMdd의 형식으로 입력됩니다.
 * 리턴 : Date
 * 예문 :
 *****************************************************************************************/

function gfn_StrToDate(sDate)

{

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

    var nMonth = parseInt(sDate.substr(4, 2)) - 1;

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

 

    return new Date(nYear, nMonth, nDate);

}

 

/******************************************************************************************
 * 기능 : 날짜를 문자로 변환하는 함수.
 * 인자 : sDate 8자리 형식으로된 날짜. yyyyMMdd의 형식으로 입력됩니다.
 * 리턴 : 해당날짜를 리턴.
 * 예문 :
 *****************************************************************************************/

function gfn_DateToStr(sDate)

{

  return (new Date(sDate)).getFullYear()

           + (((new Date(sDate)).getMonth() + 1) + "").padLeft(2, '0')

           + (((new Date(sDate)).getDate()) + "").padLeft(2, '0');

}

 

/******************************************************************************************
 * 기능 : 입력된 날짜에 mask 적용하여 구함
 * 인자 : psDate : yyyyMMdd 또는 yyyyMMddhhmmss 형태의 날짜 ( 예 : "20121122" )
 * 리턴 : mask 적용한 값 ( 예 : 2012/11/22 )
 * 예문 :
 *****************************************************************************************/

function gfn_GetMaskDate(psDate)

{

    var vsDate;

    if ( psDate.length == 8 ) {

        vsDate = gv_DateFormat;

        vsDate = vsDate.replace("yyyy",psDate.substr(0,4));

        vsDate = vsDate.replace("MM",psDate.substr(4,2));

        vsDate = vsDate.replace("dd",psDate.substr(6,2));

    }

    else if ( psDate.length == 14 ) {

        vsDate = gv_DateFormat + " hh:mm:ss";

        vsDate = vsDate.replace("yyyy",psDate.substr(0,4));

        vsDate = vsDate.replace("MM",psDate.substr(4,2));

        vsDate = vsDate.replace("dd",psDate.substr(6,2));

        vsDate = vsDate.replace("hh",psDate.substr(8,2));

        vsDate = vsDate.replace("mm",psDate.substr(10,2));

        vsDate = vsDate.replace("ss",psDate.substr(12,2));

    }

    else {

        vsDate = psDate.toString();

    }

    

    return vsDate;

}

 

/******************************************************************************************
 * 기능 : 입력된 날자로부터 요일을 구함
 * 인자 : sDate  8자리 형식으로된 날짜. yyyyMMdd의 형식으로 입력됩니다.
 * 리턴 : 요일에 따른 숫자.
 *        0 = 일요일 ~ 6 = 토요일 로 대응됩니다.
 *        오류가 발생할 경우 -1이 Return됩니다.
 * 예문 :
 *****************************************************************************************/

function gfn_GetDay(sDate)

{

    var objDate = gfn_StrToDate(sDate);

    return objDate.getDay();

}

 

/******************************************************************************************
 * 기능 : 입력된 날자로부터 요일명을 구함
 * 인자 : sDate  8자리 형식으로된 날짜. yyyyMMdd의 형식으로 입력됩니다.
 * 리턴 : 요일명
 * 예문 :
 *****************************************************************************************/
function gfn_GetDayName(sDate)

{

    var objDayName = new Array("일요일", "월요일", "화요일","수요일","목요일", "금요일","토요일");

    var objDate = gfn_GetDay(sDate);

 

    return objDayName[objDate];

}

/******************************************************************************************
 * 기능 : 해당월의 마지막 날짜를 숫자로 구하기
 * 인자 : sDate : yyyyMMdd형태의 날짜 ( 예 : "20121122" )
 * 리턴 : 성공 = 마지막 날짜 숫자값 ( 예 : 30 )
 *         실패 = -1
 * 예문 :
 *****************************************************************************************/

function gfn_LastDateNum(sDate)

{

    var nMonth, nLastDate;

 

    if( gfn_IsNull(sDate) )     return -1;

 

    nMonth = parseInt(sDate.substr(4,2), 10);

    if( nMonth == 1 || nMonth == 3 || nMonth == 5 || nMonth == 7  || nMonth == 8 || nMonth == 10 || nMonth == 12 )

        nLastDate = 31;

    else if( nMonth == 2 )  

    {

        if( gfn_IsLeapYear(sDate) == true )

            nLastDate = 29;

        else

            nLastDate = 28;

    }

    else

        nLastDate = 30;

        

    return nLastDate;

}

 

/******************************************************************************************
 * 기능 : 해당월의 마지막 날짜를 yyyyMMdd형태로 구하기
 * 인자 : sDate : yyyyMMdd형태의 날짜 ( 예 : "20121122" )
 * 리턴 : 성공 = yyyyMMdd형태의 마지막 날짜 ( 예 : "20121130" )
 *         실패 = ""
 * 예문 :
 *****************************************************************************************/

function gfn_LastDate(sDate)

{

    if( gfn_IsNull(sDate) )    return "";

 

    var nLastDate = gfn_LastDateNum(sDate);

 

    return sDate.substr(0,6) + nLastDate.toString();

}

 

/******************************************************************************************
 * 기능 : 한달후 날짜 구하는 함수.
 * 인자 : strDate : yyyyMMdd형태의 날짜 ( 예 : "20121122" )
 * 리턴 : 성공 = yyyyMMdd형태의 해당날짜를 리턴. ( 예 : "20121130" )
           실패 = ""
 * 예문 :
 *****************************************************************************************/

function gfn_GetOneMonthAfter(strDate)

{

    if (strDate)

    {

        var date = str2Date(strDate);

        var d = (new Date(date)).addMonth(1);

    } else

    {

        var d = (new Date).addMonth(1);

    }

 

    var s = (new Date(d)).getFullYear()

           + (((new Date(d)).getMonth() + 1) + "").padLeft(2, '0')

           + (((new Date(d)).getDate()) + "").padLeft(2, '0');

 

    return (s);

}

 

/******************************************************************************************
 * 기능 : Diff만큼 후 날짜 구하는 함수.
 * 인자 : strDate : yyyyMMdd형태의 날짜 ( 예 : "20121122" )
          diff : 날짜로부터 증가 감소값 offset
 * 리턴 : 성공 = yyyyMMdd형태의 해당날짜를 리턴. ( 예 : "20121130" )
 *        실패 = ""
 * 예문 :
 *****************************************************************************************/

function gfn_GetDateDiff(strDate, diff)

{

    if (strDate)

    {

        var date = str2Date(strDate);

        var d = (new Date(date)).addDate(diff);

    } else

    {

        var d = (new Date).addDate(diff);

    }

 

    var s = (new Date(d)).getFullYear()

           + (((new Date(d)).getMonth() + 1) + "").padLeft(2, '0')

           + (((new Date(d)).getDate()) + "").padLeft(2, '0');

 

    return (s);

}

 


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

// 해당 주의 시작일/종료일을 가져옴
 *****************************************************************************************/

function gfn_weekDayfromTo(year,month,week)

{

    var sDate = new Date(year +"/" + month + "/01");

    var eDate = new Date(year,month,"0");

    var rtnSdate,rtnEdate,wnum;

    var beforeDayCnt = 0;      

    var startDayWeek,endDayWeek;

     

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

    wnum = sDate.getDay();        

    

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

    if (wnum < 1){            

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

    } else if(wnum > 1) {

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

    }

    

    // 관련된 주차의 시작일

    startDayWeek = (beforeDayCnt + 1) + (7 * (week-1));

    //trace(wnum+"/"+beforeDayCnt + "/"+startDayWeek);

    rtnSdate = new Date(year + "/" + month + "/" + startDayWeek);

    

    // 관련주차의 종료일

    endDayWeek = startDayWeek + 6;

    if (week == fpm_fn_weekDayCount(year,month)) {     //해당 주차가 마지막주 라면

         endDayWeek = endDayWeek - eDate.getDate();

         rtnEdate = new Date(year + "/" + month + "/" + endDayWeek);

         rtnEdate.addMonth(1);

    } else {

        rtnEdate = new Date(year + "/" + month + "/" + endDayWeek);

    }

    

    return _dateToStr(rtnSdate) + "~" + _dateToStr(rtnEdate);

}

 


/**********************************************************************************
 ★ 설명
    숫자로 된 년, 월, 일을 yyyyMMdd형의 문자열 날짜로 만든다.
 ★ parameter
    1. nYear  : 년도 ( 예 : 2012 )
    2. nMonth : 월 ( 예 : 11 )
    3. nDate   : 일 ( 예 : 22 )
 ★ return
    - 성공 = yyyyMMdd형태의 날짜 ( 예 : "20121122" )
    - 실패 = ""
 ★ 주의사항     
    년, 월, 일의 값이 범위에 맞지 않는 값을 입력하면 그에 적합한 날짜로 변경해준다.
    (예 : nYear = 2012, nMonth = 13, nDate = 32 ==> return = "20130201"
          nYear = 2012, nMonth = 1, nDate = -1 ==> return = "20111230")
**********************************************************************************/

function fn_MakeDate(nYear, nMonth, nDate)

{

 if( fn_IsNull(nYear) || fn_IsNull(nMonth) || fn_IsNull(nDate) ) return "";

 

   var objDate = new Date(nYear, nMonth-1, nDate);

 

 var sYear   = objDate.getFullYear().toString();

 var sMonth  = Right("0" + (objDate.getMonth() + 1), 2);

 var sDate   = Right("0" + objDate.getDate(), 2);

 

 return sYear + sMonth + sDate;

}

/*******************************************************************************
 ★ 설명
    Date기본 Format( = yyyyMMdd[hhmiss])를 XP Date기본 Format( = yyyy-MM-dd[ hh:mi:ss] ) 으로 바꾸어줌
 ★ parameter
    1. sDate : yyyyMMdd[hhmiss]형태의 일자 ( 예 : "20121122" 또는 "20121122010203")
 ★ return
    - 성공 = XP Date기본 Format( 예 : "2012-11-22" 또는 "2012-11-22 01:02:03")
    - 실패 = ""
 ★ 주의사항
    sDate는 yyyyMMdd 또는 yyyyMMddhhmiss 형태만 처리된다.
**********************************************************************************/

function fn_Date2XP(sDate)

{

 var ret;

 

 if( fn_IsNull(sDate) )  return "";

 if( sDate.length != 8 && sDate.length != 14 )

  return "";

 

 ret = sDate.substr(0, 4) + "-" + sDate.substr(4, 2)+ "-" + sDate.substr(6, 2);

 if( sDate.length > 8 )

  ret += " " + sDate.substr(8,2) + ":" + sDate.substr(10,2) + ":" + sDate.substr(12,2);

 

 return ret;

}


/******************************************************************************
* Function명 : gfn_dateSum()
* 설명 : 날짜 더하거나 뺀값을 반환하는 메소드
* Params : fixDate - 기준일(2010-01-31) yyyy-MM-dd 형식의 String 값
addYear - 증가하거나 감소할 년도 값
addMonth - 증가하거나 감소할 월값
addDate - 증가하거나 감소할 일값
type - 리턴될 날짜 형식을 지정하는 값(기본값 : yyyyMMdd)
* Return : type == "yyyyMMdd" 결과값 "20100101"
type == "yyMMdd" 결과값 "100101"
type == "yyyy" 결과값 "2010"
type == "yy" 결과값 "10"
type == "MM" 결과값 "01"
type == "dd" 결과값 "01"
******************************************************************************/

function gfn_dateSum(fixDate, addYear, addMonth, addDate, type){

var date = new Date(fixDate.substring(0, 4) + "-" + fixDate.substring(4, 6) + "-" + fixDate.substring(6, 8));

 

date.addYear(addYear);

date.addMonth(addMonth);

date.addDate(addDate);

 

var result = date.getYear() + "" + ((date.getMonth() + 1) + "").padLeft(2, '0') + (date.getDate() + "").padLeft(2, '0');

switch(type){

case "yyyyMMdd" :

return result;

case "yyyyMM" :

return result.substring(0,6);

case "yyMMdd" :

return result.substring(2,8);

case "yyyy" :

return result.substring(0,4);

case "yy" :

return result.substring(2,4);

case "MM" :

return result.substring(4,6);

case "dd" :

return result.substring(6,8);

}

return result;

}

 

 
 
 
 

  

Posted by 농부지기
,

[  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 농부지기
,