자바스크립트에서 마지막 날짜를 구하는 방법은 내가 구하고자 하는 다음 달의 date 값을 0으로 설정하면 됩니다.
예를 들어 2월의 마지막 날짜를 구하고 싶다면 아래와 같이 코드를 작성하면 됩니다.
const date = new Date('2022-03');
date.setDate(0);
console.log(date); // 28
하지만 위의 코드에는 문제가 존재하였습니다. Date 객체 생성시 문자열로 인수를 전달 할때 13을 전달 하면 Invalid Date
값이 반환됩니다.
new Date('2022-13'); // Invalid Date
자바스크립트에서 month는 0부터 시작하기 때문에 문자열을 인수로 자주 사용했었는데 이런 문제가 존재했습니다.
해결 방법은 날짜를 입력 받을 때 12월을 초과하는 경우를 조건문으로 처리 할 수 있지만 훨씐 간편한 방법이 존재했습니다.
날짜를 문자열이 아닌 숫자 타입으로 전환하면 됩니다. Date 생성자 함수 호출 시 두개 이상의 숫자 타입을 신수로 넘겨주면 차례대로 year, month, day, hour, minute, second, millisecond로 전달됩니다.
그래서 두번째 인수로 12를 전달하고 세번째 인수로 0을 전달하면 12월의 마지막 날짜를 구할 수 있습니다.
new Date(2022, 12, 0).getDate()
자바스크립트에서는 1월이 0이기때문에 13월은 12가 됩니다.