JavaScript의 Date 객체에서 특정 일수를 빼고 싶다면 setDate() 메서드를 사용하면 됩니다. 핵심 원리는 간단합니다. 먼저 현재 일자를 가져온(getDate()) 뒤, 여기서 원하는 일수만큼 차감한 값을 다시 설정(setDate())하는 것입니다.
setDate() 메서드란?
JavaScript의 setDate() 메서드는 지정된 날짜 객체의 '일(day)' 값을 현지 시간(local time) 기준으로 설정합니다. 이 메서드의 장점은 월과 연도 경계를 자동으로 처리해 준다는 점입니다. 예를 들어 1일에서 5일을 빼면 자동으로 이전 달의 마지막 날짜로 계산되므로, 개발자가 별도로 월 변경 로직을 구현할 필요가 없습니다.
예제 코드
아래 코드를 실행하면 현재 날짜에서 10일을 뺀 결과를 확인할 수 있습니다.
<html>
<head>
<title>JavaScript setDate Method</title>
</head>
<body>
<script>
var dt = new Date("December 30, 2017 11:20:25");
dt.setDate( dt.getDate() - 10 );
document.write( dt );
</script>
</body>
</html>
실행 결과
Wed Dec 20 2017 11:20:25 GMT+0530 (India Standard Time)
위 예제에서 2017년 12월 30일에서 10일을 빼면 12월 20일이 출력됩니다. 만약 차감한 값이 그 달의 첫날보다 작아지더라도, setDate()가 알아서 이전 달로 넘어가 계산해 주기 때문에 안심하고 사용할 수 있습니다.
정리
dt.getDate() - 원하는 일수 형태로 값을 구한 뒤 setDate()에 전달하면 되며, 반대로 날짜를 더하고 싶을 때는 마이너스(-) 대신 플러스(+)를 사용하면 됩니다. 이 방식은 별도의 외부 라이브러리 없이 순수 JavaScript만으로 날짜 계산을 처리할 수 있는 가장 간단하고 확실한 방법입니다.