본문 바로가기
카테고리 없음

javascript getMonth 12월이 0으로 표기되는 오류

by 주앤정_블로그 2023. 12. 29.

javascript getMonth 12월이 0으로 표기되는 오류

 

이전 글에서 javascript로 날짜를 구하고 계산하는 방법을 서술했었다.

2023.10.17 - [개발하는 '정'/JS] - javascript 현재 날짜 구하기 / 날짜 더하고 빼기 / date format (YYYY-mm-dd)

 

javascript 현재 날짜 구하기 / 날짜 더하고 빼기 / date format (YYYY-mm-dd)

javascript 현재 날짜 구하기 / 날짜 더하고 빼기 / date format (YYYY-mm-dd) javascript에는 date 객체의 포맷을 설정할 수 있는 함수가 없다. 그러므로 연/월/일을 각각 구해 계산한 후, 문자열 형태로 원하는

zpxlcm.tistory.com

 

 

해당 방법은 1월 ~ 11월까지는 문제가 없으나 12월이 0으로 표기되는문제가 발생했다.

오류 수정 전

 

 

우선 javascript에서 getMonth 함수로 현재 월을 받아올 수 있다.

반환값은 0부터 11이다. (1월 : 0, 2월 : 1, ... 11월 : 10, 12월 : 11)

보통은 아래처럼 화면에 표시할 때 getMonth() +1 해주게 된다.

 

let month = date.getMonth()+1;

 

그러나 12월(11) 에서 1을 더하면 12가 아니라, 0으로 초기화된다.

 

아래와 같이 getMonth가 11인 경우 12로 표기하도록 지정했다.

let month = date.getMonth() == 11 ? 12 : date.getMonth()+1;

오류 수정 후

 

 

이전 글에서 작성한 소스는 아래와 같이 수정한다. ( getMonth+1 한 값이 0으로 초기화된 경우는 12월로 설정)

function setDate(val) {
    if (val)
    {
        let date = new Date();

        //종료일 (현재)
        date.setMonth(date.getMonth()+1);
        //let e_month = date.getMonth();
        let e_month = date.getMonth() == '0' ? '12' : date.getMonth(); 
        let day = date.getDate();
        let hour = date.getHours();
        e_month = e_month >= 10 ? e_month : '0' + e_month;
        day = day >= 10 ? day : '0' + day;

        $("input[name='edate']").val(date.getFullYear() + '-' + e_month + '-' + day);

        //시작일 (현재 - val)
        date.setMonth(date.getMonth()-val);
        //let s_month = date.getMonth();
        let s_month = date.getMonth() == '0' ? '12' : date.getMonth();
        s_month = s_month >= 10 ? s_month : '0' + s_month;

        $("input[name='sdate']").val(date.getFullYear() + '-' + s_month + '-' + day);
    }
}
반응형

댓글