[TIL]Date.setDate()

호준·2023년 4월 4일
0

TIL

목록 보기
8/9
post-thumbnail

🎈문제

객체가 가지고 있는 날짜에서 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


⚠️틀린부분이 있으면 말씀해주세요!! 수정하겠습니다.

profile
도전하자

0개의 댓글