타임스탬프란 무엇인가 - 유닉스 시간부터 변환 방법까지 한번에 정리
로그 파일이나 데이터베이스에서 자주 보이는 1700000000 같은 숫자, 도대체 무슨 뜻일까요. 타임스탬프의 원리와 실제 변환 방법을 쉽게 풀어드립니다.
![]()
서버 로그를 열어보거나 데이터베이스를 들여다봤을 때 1700000000 같은 의미 모를 숫자를 마주친 적이 있을 겁니다. 분명 시간을 기록한 값이라는데, 우리가 아는 날짜 형식과는 전혀 다르게 생겼습니다. 이 정체불명의 숫자가 바로 타임스탬프입니다. 개발자뿐 아니라 데이터를 다루는 사람이라면 누구나 한 번쯤 풀어내야 하는 값이죠.
타임스탬프란 무엇인가
타임스탬프(timestamp)는 말 그대로 특정 시점을 표시한 값입니다. 한국어로는 시각 기록 또는 시점 표시라고 옮길 수 있습니다. 넓은 의미로는 '2026년 5월 31일 14시 30분'처럼 사람이 읽을 수 있는 날짜 문자열도 타임스탬프에 포함됩니다.
하지만 개발과 데이터 분야에서 타임스탬프라고 하면 대부분 유닉스 타임스탬프를 가리킵니다. 컴퓨터가 시간을 다루기 가장 편한 형태, 즉 하나의 정수로 표현한 시각입니다. 사람에게는 낯설지만 기계에게는 더없이 깔끔한 표기법입니다.
타임스탬프의 핵심은 '시간을 숫자 하나로 압축한다'는 데 있습니다. 연, 월, 일, 시, 분, 초를 따로 저장하는 대신 단 하나의 정수로 모든 시점을 표현합니다.
유닉스 타임스탬프의 원리
유닉스 타임스탬프는 1970년 1월 1일 0시 0분 0초(UTC)를 기준점으로 삼습니다. 이 시점을 '에포크(Epoch)'라고 부릅니다. 그리고 그 기준점으로부터 몇 초가 흘렀는지를 누적해서 셉니다.
예를 들어 타임스탬프 값이 0이라면 1970년 1월 1일 0시 정각을 뜻합니다. 값이 86400이라면 정확히 하루(24시간 곱하기 3600초) 뒤인 1970년 1월 2일이 됩니다. 단순하지만 강력한 방식입니다.
왜 하필 1970년일까
1970년은 유닉스 운영체제가 본격적으로 개발되던 시기입니다. 당시 개발자들이 계산하기 편한 기준점으로 1970년 1월 1일을 정했고, 이것이 사실상 전 세계 컴퓨터 시스템의 표준이 되었습니다. 윈도우, 리눅스, 맥, 안드로이드, 거의 모든 프로그래밍 언어가 이 기준을 공유합니다.
| 타임스탬프 값 | 실제 시각 (UTC) | 의미 |
|---|---|---|
| 0 | 1970-01-01 00:00:00 | 에포크 기준점 |
| 1000000000 | 2001-09-09 01:46:40 | 10억 초 돌파 (화제가 됐던 시점) |
| 1700000000 | 2023-11-14 22:13:20 | 17억 초 돌파 |
| 1748649600 | 2025-05-31 00:00:00 | 특정 날짜 예시 |
왜 타임스탬프를 쓸까
날짜를 그냥 '2026-05-31'처럼 저장하면 사람이 읽기 편한데, 왜 굳이 숫자로 바꿔서 쓸까요. 이유는 명확합니다.
- 비교가 쉽다: 두 시점의 선후를 따질 때 숫자 크기만 비교하면 됩니다. 1700000000과 1700000060 중 뒤가 더 나중이라는 걸 단번에 알 수 있습니다.
- 계산이 간단하다: 두 시점 사이의 간격을 구하려면 그냥 빼기만 하면 됩니다. 결과가 초 단위로 바로 나옵니다.
- 시간대 혼란이 없다: 유닉스 타임스탬프는 UTC 기준이라 전 세계 어디서 기록해도 같은 값입니다. 시간대 변환은 표시할 때만 처리하면 됩니다.
로그 분석, 데이터 정렬, 캐시 만료 시간, 토큰 유효기간 같은 곳에서 타임스탬프가 빠지지 않고 등장하는 이유가 여기 있습니다. 사람이 보기 좋은 형식보다 기계가 처리하기 좋은 형식이 시스템 내부에서는 훨씬 유리합니다.
타임스탬프 변환 방법
타임스탬프를 사람이 읽는 날짜로, 또는 그 반대로 바꾸는 방법은 어렵지 않습니다. 환경별로 정리하면 다음과 같습니다.
프로그래밍 언어로 변환
- 자바스크립트:
new Date(1700000000 * 1000)- 초 단위에 1000을 곱해 밀리초로 맞춥니다. - 파이썬:
datetime.fromtimestamp(1700000000)- 한 줄로 변환됩니다. - PHP:
date('Y-m-d H:i:s', 1700000000)- 형식 지정까지 한 번에 가능합니다.
온라인 도구로 변환
코드를 쓰기 번거롭다면 웹 기반 타임스탬프 변환 도구를 쓰는 게 빠릅니다. 숫자를 붙여넣으면 즉시 날짜로 바꿔주고, 현재 시각의 타임스탬프도 실시간으로 보여줍니다. 개발 과정에서 로그 한두 줄을 빠르게 확인할 때 특히 유용합니다.
참고로 데이터를 다루다 보면 타임스탬프 외에도 변환이나 인코딩 작업이 자주 필요해집니다. 정보를 다른 형태로 바꾼다는 점에서는, 텍스트를 점과 선의 신호로 바꾸는 모스 부호 변환기나 주소를 코드 이미지로 만드는 QR코드 생성기 같은 도구도 같은 맥락의 변환 유틸리티라 할 수 있습니다. 데이터를 사람과 기계 양쪽이 다룰 수 있게 형태를 바꾼다는 원리가 통합니다.
실무에서 주의할 점
타임스탬프를 다룰 때 흔히 겪는 함정이 몇 가지 있습니다. 미리 알아두면 디버깅 시간을 크게 아낄 수 있습니다.
- 초 vs 밀리초 혼동: 가장 흔한 실수입니다. 1000배 차이가 나면 날짜가 1970년 근처나 수만 년 뒤로 튀어버립니다. 자릿수를 먼저 확인하세요.
- 2038년 문제: 32비트 정수로 타임스탬프를 저장하면 2038년 1월 19일에 값이 넘쳐서 오작동합니다. 요즘은 64비트를 쓰지만, 오래된 시스템에서는 여전히 점검이 필요합니다.
- 시간대 미적용: 저장은 UTC로, 표시는 사용자 시간대로 하는 원칙을 지켜야 합니다. 이 둘을 섞으면 9시간 어긋난 데이터가 쌓입니다.
타임스탬프는 처음엔 낯선 숫자 덩어리처럼 보이지만, 기준점과 단위만 이해하면 다루기 쉬운 개념입니다. 지금 마주친 알 수 없는 숫자가 있다면 자릿수부터 세어보고, 온라인 변환 도구에 넣어 실제 날짜를 확인해 보세요. 직접 코드로 변환해 보면 원리가 훨씬 빠르게 손에 익습니다.