컴퓨터 세계에서 '에포크(Epoch)'는 1970년 1월 1일 00시 00분 00초(UTC)를 가리키며, 대부분의 프로그래밍 언어가 시간을 계산할 때 기준으로 삼는 시점입니다. 자바스크립트에서는 Date 객체가 제공하는 getTime() 메서드를 사용하면 에포크 이후 경과된 시간을 밀리초 단위의 숫자로 손쉽게 얻을 수 있습니다.
예제 코드
다음 예제는 현재 날짜와 에포크 기준으로 변환된 날짜를 함께 출력하는 방법을 보여줍니다.
<html>
<head>
<title>JavaScript Epoch Time</title>
</head>
<body>
<script>
var current_date, epocDate;
current_date = new Date();
document.write("Current Date: "+current_date);
var epocDate = new Date(new Date().getTime() / 1000);
document.write("<br>Since epoch: "+epocDate);
</script>
</body>
</html>실행 결과
Current Date: Mon May 28 2018 09:23:11 GMT+0530 (India Standard Time) Since epoch: Sun Jan 18 1970 21:47:59 GMT+0530 (India Standard Time)
코드 살펴보기
- new Date() – 현재 시점의 날짜와 시간 정보를 담은 Date 객체를 생성합니다.
- getTime() – 에포크(1970년 1월 1일 00:00:00 UTC)부터 현재까지 경과한 시간을 밀리초 단위로 반환합니다.
- getTime() / 1000 – 밀리초 값을 초 단위로 변환합니다. 이 값을 다시
new Date()에 전달하면 에포크 직후의 시점을 나타내는 날짜 객체가 만들어지기 때문에, 실행 결과에서처럼 1970년의 날짜가 출력됩니다.
참고: 타임스탬프 값만 필요한 경우
날짜 객체가 아니라 에포크 이후 경과 시간(타임스탬프) 값 자체가 필요하다면 아래처럼 작성하는 것이 더 간결하고 효율적입니다.
const timestampMs = Date.now(); // 밀리초 단위 타임스탬프 const timestampSec = Math.floor(Date.now() / 1000); // 초 단위 타임스탬프
Date.now()는 별도의 객체 생성 없이 현재 타임스탬프를 즉시 반환하므로, 단순히 시간 값을 비교하거나 저장할 때 널리 사용됩니다.