유틸리티

타임스탬프 변환하는 법, Unix 시간과 날짜 상호 변환

서버 로그를 열었더니 시간이 1709251200으로 찍혀 있다. 사람이 읽을 수 있는 날짜가 아니라 숫자 10자리다. 이건 Unix 타임스탬프로, 날짜와 시간을 정수 하나로 표현한 것이다.

Unix 타임스탬프란

Unix 타임스탬프(Epoch time)는 1970년 1월 1일 00:00:00 UTC부터 경과한 초 수를 나타낸다. 이 기준 시점을 에포크(Epoch)라고 부른다. 날짜를 숫자 하나로 표현하기 때문에 프로그래밍에서 시간 비교, 정렬, 저장이 간편해진다.

예를 들어 2026년 3월 1일 00:00:00 UTC는 타임스탬프로 1772265600이다. 이 숫자가 1초마다 1씩 올라간다.

초와 밀리초 구분

타임스탬프를 다루다 보면 자릿수가 다른 경우를 만난다. 10자리면 초 단위, 13자리면 밀리초 단위다.

단위자릿수예시주요 사용처
초(s)10자리1709251200Unix/Linux, PHP, Python
밀리초(ms)13자리1709251200000JavaScript, Java, API 응답
TIP JavaScript의 Date.now()는 밀리초를 반환하고, Python의 time.time()은 초(소수점 포함)를 반환한다. 언어에 따라 단위가 다르니 변환할 때 주의해야 한다.

변환하는 법

타임스탬프를 날짜로, 날짜를 타임스탬프로 바꾸는 과정은 간단하다.

타임스탬프 → 날짜

  1. 타임스탬프 변환기에 숫자를 입력한다
  2. 자릿수에 따라 초/밀리초가 자동 판별된다
  3. 로컬 시간, UTC, ISO 8601 형식으로 결과가 표시된다

날짜 → 타임스탬프

  1. 날짜 입력 탭에서 연, 월, 일, 시, 분, 초를 지정한다
  2. 해당 시점의 타임스탬프가 초와 밀리초 두 가지로 출력된다

페이지 상단에 현재 시각의 타임스탬프가 1초마다 갱신되면서 표시되니, 지금 이 순간의 값이 필요하면 바로 복사하면 된다.

UTC와 로컬 시간, 뭘 기준으로 저장할까

타임스탬프 자체는 시간대(timezone)에 영향을 받지 않는다. 같은 순간은 서울이든 뉴욕이든 같은 숫자다. 달라지는 건 사람이 읽는 표시 형태뿐이다.

  • UTC: 서버 간 통신, API, 로그에 쓰는 국제 기준 시간
  • 로컬: 사용자에게 보여줄 때 기기 설정에 맞춰 변환
  • ISO 8601: 2026-03-01T09:00:00+09:00처럼 시간대 정보까지 포함하는 표준 형식

데이터베이스에는 UTC 기준으로 저장하고, 프론트엔드에서 로컬 시간으로 변환해서 보여주는 게 일반적이다. 시간대를 섞어 저장하면 나중에 정렬이나 비교할 때 골치 아파진다.