객체가 가지고 있는 날짜에서 3일전의 날짜를 구하고 싶었습니다.
그래서 저는 아래와 같이 설정하였습니다.
let date = $('#date).val(); // 2023-02-09
let endDate = new Date(date);
let startDate = new Date(); // 오늘 날짜 2023-04-04
startDate.setDate(endDate.getDate()-3);
원하는 값으로는 2023-02-06이 나와야하는데 2023-04-06이 나왔습니다.
let date = $('#date).val(); // 2023-02-09
let endDate = new Date(date);
let startDate = new Date(date); // 날짜 세팅 2023-02-09
startDate.setDate(endDate.getDate()-3);
위와 같이 startDate도 객체시간으로 할당하여 계산하였더니 원하는 값이 2023-02-06이 나왔습니다.
결론부터 말씀드리면, 1970 년 1 월 1 일 00:00:00 UTC와 주어진 날짜 사이의 밀리 초로 변경되서 계산 되기 때문입니다.
endDate.getDate()-3의 값은 6입니다.(9 - 3 = 6)
그래서 2023-04-04이 값인 객체에서 setDate(6)을 했을 때 2023-04-06으로만 바뀌게 됩니다.
그래서 2023-02-09인 같은 일수로 맞춰줬습니다.
다른 방법으로는
let startDate = new Date(endDate.getTime() - 3 * 24 * 60 * 60 * 1000);
이런식으로 설정해주면 됩니다.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Date/setDate