■■■ Develop ■■■/[ Local ]

[ Javascirpt ] - 월요일 기준으로 주차 구하기 [ 주차 , JAVASCRIPT , javascript , 주차구하기 ]

시드라엘 2013. 9. 9. 19:33

    //월요일을 중심으로한 주차 구하기

    //차일 변수
    var minusDay = 0;

    //주차를 계산하고픈 일
    var wkDtStr = "20130901";

    //계산하고픈달 시작일 1일
    var stDtStr = wkDtStr.substring(0,6) + "01";
    var stDtCal = new Date( stDtStr.substring(0,4) , stDtStr.substring(4,6) , stDtStr.substring(6,8) );
   
    //요일 구하기
    var weekCal = new Date( wkDtStr.substring(0,4) , ( wkDtStr.substring(4,6) - 1 ) , wkDtStr.substring(6,8) );

    //주차를 계산하고픈 일 달력 생성
    var wkDtCal = new Date( wkDtStr.substring(0,4) , wkDtStr.substring(4,6) , wkDtStr.substring(6,8) );

    //매달 시작일에 따른 빼줘야 하는 값
    var week = new Array( 1, 0, 5, 4, 3, 2, 1 );

    minusDay = wkDtCal.getDate() - stDtCal.getDate() - week[ weekCal.getDay() ] ;

    //만약 2일부터 1주차인데 1일을 입력했을경우 혹은 년도가 바뀔경우
    if( ( minusDay - week[ weekCal.getDay() ] ) < 0 ){

        wkDtCal.setDate( stDtCal.getDate() - 1 );
        stDtCal.setDate( stDtCal.getDate() - wkDtCal.getDate() );

        minusDay = wkDtCal.getDate() - stDtCal.getDate();

//        alert( "변경된 시작일 : " + stDtCal.getYear() + stDtCal.getMonth() + stDtCal.getDate() + "" );
//        alert( "변경된 마지막일 : " + wkDtCal.getYear() + wkDtCal.getMonth() + wkDtCal.getDate() + "" );
//        alert( "두 날짜 차일 : " + wkDtCal.getDate() - stDtCal.getDate() );
    }
   
    var weekNm = minusDay / 7 + 1;

    //연산
    alert( wkDtCal.getYear() + "년" + wkDtCal.getMonth() + "월" + parseInt(weekNm) + " 주차 " );

 

날짜를 집어넣으면 월요일 기준으로 주차를 계산하는 함수

쉽게 말해서 2013 년 10월 7일은  2013 년 10 월 1주차 로 계산됨 ( 2주차가 아님 )

무조건 월요일이 지나가야 1주차가 된다.

별거아닌거 짜면서 골 깨지는줄 알았음.. ㅋㅋ