날짜를 지정할 때 한달 간격으로 선택하는 경우가 많다. 이럴 경우 현재의 1일부터 마지막일까지를 가져오게되는데, 2월의 경우 29일 30일 31일이 윤년이 아닐경우에 각각 3월 1,2,3으로 잡힌다. 그달의 처음과 끝을 명확히 가져오고싶다면 setDate(1)을 먼저 해준후에 연산해주도록한다.(사실 1일이 아니라 1~28일 사이의 값이면 된다.)
아래의 예시는 1월 한달을 가져오는 잘못된 예시와 좋은 예시를 보여준다.
// 잘못된 예시
const date = new Date('2022-1-31');
date.setMonth(date.getMonth() + 1); // 1월의 다음달인 2월
date.setDate(0); //전달의 마지막일을 가져온다
console.log(date.toISOString()); //'2022-02-28T00:00:00.000Z'
// 좋은 예시
const date = new Date('2022-1-31');
date.setDate(1); // 1일로 명시
date.setMonth(date.getMonth() + 1); // 1월의 다음달인 2월
date.setDate(0); //전달의 마지막일을 가져온다
console.log(date.toISOString()); //'2022-01-31T00:00:00.000Z'
감사합니다~
const date = new Date('2022-1-31');
여기서 월 부분에 '01' 이런 식으로 안 해주면 제대로 계산이 안 되니까
'YYYY-MM-DD' 이런 식으로 사용하시면 될 것 같습니다!