Typescript

[js, ts] 시간 계산에 getTime()을 쓰면 좋은 이유

sihanni 2025. 12. 25. 11:09

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()을 쓰는 습관을 가져 데이터가 변질되거나 객체끼리 비교하다가 에러를 발생시키는 것을 방지하자.