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);
}
}
반응형
댓글