JavaScript에서 현재 타임스탬프 얻기
JavaScript 개발을 하다 보면 현재 시간을 타임스탬프 형태로 확인해야 하는 경우가 자주 있습니다. 타임스탬프는 크게 두 가지 단위로 표현할 수 있습니다.
- 초(seconds) 단위의 Unix 타임스탬프
- 밀리초(milliseconds) 단위의 에포크(Epoch) 이후 경과 시간
대부분의 프로그래밍 언어는 에포크(1970년 1월 1일 00:00:00 UTC) 이후 흐른 초를 기준으로 시간을 다루지만, JavaScript는 밀리초를 기준으로 동작한다는 점이 특징입니다. 따라서 용도에 맞게 단위를 올바르게 변환하는 것이 중요합니다.
1. 초 단위 Unix 타임스탬프 구하기
아래 코드는 현재 시간을 초 단위의 Unix 타임스탬프로 변환하여 반환합니다.
const date = new Date();
const unix = Math.round(+date / 1000);
console.log(unix);
+date는 Date 객체를 밀리초 단위의 숫자 값으로 변환합니다. 이 값을 1000으로 나눈 뒤 Math.round()로 반올림하면 초 단위의 Unix 타임스탬프를 얻을 수 있습니다.
2. 밀리초 단위 타임스탬프 구하기
아래 코드는 에포크 이후 경과한 시간을 밀리초 단위로 그대로 반환합니다. 참고로 이 값은 Unix 타임스탬프(초 단위)가 아니라는 점에 유의하세요.
const date = new Date();
const milliseconds = date.getTime();
console.log(milliseconds);
더 간단한 방법: Date.now()
모던 JavaScript 환경에서는 Date.now() 메서드를 사용하면 Date 객체를 생성하지 않고도 현재 시간의 밀리초 타임스탬프를 즉시 얻을 수 있습니다.
// 밀리초 단위
const milliseconds = Date.now();
// 초 단위 Unix 타임스탬프
const unix = Math.floor(Date.now() / 1000);
console.log(milliseconds);
console.log(unix);
성능 면에서도 객체 생성을 생략하는 Date.now()가 더 효율적이므로, 별도의 날짜 연산이 필요 없다면 이 방법을 사용하는 것을 권장합니다.