1. 값만 뽑아서 비교를 정확하고 안전하게 할 수 있다.
const date1 = new Date('2025-12-25 10:00');
const date2 = new Date('2025-12-25 10:00');
console.log(date1 === date2); // 결과: false (서로 다른 객체이기 때문)
console.log(date1.getTime() === date2.getTime()); // 결과: true (시간 값이 같기 때문)
자바스크립트에서 Date는 객체(Object)입니다.
객체끼리 ' > ' 나 ' < ' 비교를 하면 내부적으로 숫자로 변환되어 동작하긴 하지만, == 이나 === 비교를 할 때 문제가 생깁니다.
이처럼 getTime() 을 사용하면 객체 간 객체 비교가아니라 숫자 대 숫자의 비교가 되어 더 정확히 계산할 수 있게 됩니다.
2. 산술 계산
getTime()을 쓰지 않고 date1, date2 끼리는 객체라 객체 끼리의 산술 연산을 할 수 없습니다.
getTime()을 사용하면 두 시간의 차이를 밀리초(ms) 단위 숫자로 정확히 반환합니다.
3. 참조 끊기
let a = new Date();
let b = a; // b는 a와 같은 객체를 가리킴 (참조)
b.setHours(20);
console.log(a.getHours()); // a도 20시로 변해버림! (버그 발생)
let c = new Date(a.getTime()); // a의 '값'만 복사해서 완전히 새로운 객체를 만듦
c.setHours(10);
console.log(a.getHours()); // a는 여전히 20시 유지 (안전)
getTime()은 new Date() 로 객체를 생성할 때, 인자로 다른 Date 객체를 그대로 넣으면 복사가 되지만 (new Date(date)), 간혹 참조 문제가 생기거나 명확하게 숫자(Timestamp) 으로 생성하기 위해 사용됩니다.
new Date(dayOpenAt.getTime());
위와 같이 사용하면 dayOpenAt이라는 기준 시간의 값을 그대로 복사하여 새로운 Date 객체를 만들 수 있어 원본인 dayOpenAt을 변형시키지 않고 안전하게 복사하여 계산에 사용할 수 있게 됩니다.
정리
getTime()을 쓰는 습관을 가져 데이터가 변질되거나 객체끼리 비교하다가 에러를 발생시키는 것을 방지하자.
'Typescript' 카테고리의 다른 글
| [TypeScript] Type vs Interface (0) | 2025.10.14 |
|---|---|
| [Catarie] 이틀만에 S3 Put 요청이 2천회 넘기다. (0) | 2025.09.15 |
| [TypeScript] module/ moduleResolution 에러 해결과 옵션 정리 (1) | 2025.09.01 |
| [TypeScript] TS Cheat Sheet (Type, Interface) (0) | 2025.08.19 |
| 배열 관련 메서드 (0) | 2024.10.22 |