자바를 사용할 때는 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일이라는 값이 나와버린다.
'이슈 해결 로그' 카테고리의 다른 글
maven-resources-plugin filter 이슈 (0) | 2020.06.26 |
---|---|
Docker hub 사용하지 않고 서버에 도커이미지 업로드 하기 (0) | 2020.06.26 |
도커 이미지 빌드가 되지 않을 때(무한 대기) (0) | 2020.06.26 |
리눅스에서 vi 에디터 말고 명령어로 문자 추가하는 법 (0) | 2020.06.17 |
java.lang.UnsatisfiedLinkError(Shared Library Link) (0) | 2020.06.17 |