자바를 사용할 때는 Calendar나 LocalDateTime 클래스 등을 이용하면 쉽게 날짜를 더하고 뺄 수 있다.

자바스크립트에서는 어떻게 하는 지에 대한 내용을 정리해본다.


아래와 같이 get / set 함수를 적절히 사용하면 된다.


var today = new Date(); // 오늘

var yesterday = new Date(today.setDate(today.getDate() - 1)); // 어제


today = new Date(); // 오늘

var tomorrow = new Date(today.setDate(today.getDate() + 1)); // 내일


이 방법을 알아보면서 걱정했던 건, today를 1월 1일이라고 했을 경우, today.getDate() - 1 = 0  이 된다. today를 12월 31일로 했을 경우에도 이와 비슷한 상황이 벌어진다. 다행히도 자바스크립트는 이런 값이 setter에 들어올 경우 적절히 알아서 날짜를 계산해준다.


var x = new Date('2020-01-01'); // 2020년 1월 1일

new Date(x.setDate(x.getDate() - 1)); // Tue Dec 31 2019 09:00:00 GMT+0900 (대한민국 표준시)

x = new Date('2020-12-31'); // 2020년 12월 31일 

new Date(x.setDate(x.getDate() + 1)); // Fri Jan 01 2021 09:00:00 GMT+0900 (대한민국 표준시)


달에 대해서도 사용할 수 있으면 좋으나 달의 경우 이와 같은 방법이 불가능하다.

밑의 예시를 보자.


var x = new Date('2020-01-31'); // 2020년 1월 31일

new Date(x.setMonth(x.getMonth() + 1)); // Mon Mar 02 2020 09:00:00 GMT+0900 (대한민국 표준시)


위에서 x.getMonth()의 결과는 1월을 뜻하는 0이 나온다.(달은 0 ~ 11) 따라서 setMonth(1)이 될 것이고 2020년 2월 31일이 될텐데 2월에 31일은 없으므로 3월 2일이라는 값이 나와버린다.

+ Recent posts