TSUnix 타임스탬프 변환
Unix 타임스탬프와 날짜 간 변환
Current Unix Timestamp
1784653907
2026. 7. 22. AM 2:11:47 (KST)
Timestamp → Date
Date → Timestamp
Unix 타임스탬프 완벽 가이드
Unix 타임스탬프는 1970년 1월 1일 00:00:00 UTC(Unix 에포크)로부터 경과한 초 수를 나타내는 정수값입니다. 운영체제, 데이터베이스, REST API, 로그 시스템 등 거의 모든 기술 스택에서 날짜·시간을 저장하고 전달하는 표준 방식입니다. 시간대에 무관하게 동일한 순간을 하나의 숫자로 표현할 수 있다는 것이 가장 큰 장점입니다.
초 vs 밀리초 vs 마이크로초
| 단위 | 현재 자릿수 (2020년대) | 예시 | 주요 사용처 |
|---|---|---|---|
| 초 (seconds) | 10자리 | 1700000000 | Unix 기본, Python time.time() |
| 밀리초 (ms) | 13자리 | 1700000000000 | JavaScript Date.now(), Java |
| 마이크로초 (μs) | 16자리 | 1700000000000000 | Python time.time_ns()//1000 |
| 나노초 (ns) | 19자리 | 1700000000000000000 | Go time.Now().UnixNano() |
2038년 문제 (Y2038)
32비트 signed integer로 Unix 타임스탬프를 저장하면 최댓값은 2,147,483,647이며, 이는 2038년 1월 19일 03:14:07 UTC에 해당합니다. 이 시점 이후 오버플로우가 발생해 1901년으로 되돌아가는 버그가 생깁니다.
- 영향 범위: 32비트 C/C++ 시스템, 구형 Linux 커널, 일부 임베디드 시스템
- 해결책: 64비트 정수 사용 (약 2920억 년까지 지원)
- 현대 시스템: 64비트 OS/언어는 이미 안전. Python, Go, Rust, Java 모두 64비트 타임스탬프 사용
- 주의 필요: 구형 MySQL의 TIMESTAMP 타입(32비트), 일부 IoT 기기
언어별 타임스탬프 함수
| 언어 | 현재 타임스탬프 (초) | 밀리초 |
|---|---|---|
| JavaScript | Math.floor(Date.now()/1000) | Date.now() |
| Python | int(time.time()) | int(time.time()*1000) |
| Go | time.Now().Unix() | time.Now().UnixMilli() |
| Java | System.currentTimeMillis()/1000 | System.currentTimeMillis() |
| Rust | SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_secs() | ...as_millis() |
자주 묻는 질문 (FAQ)
Q. 에포크가 왜 1970년 1월 1일인가요?
Unix 운영체제 개발 당시(1960년대 말~1970년대 초) 개발팀이 실용적 기준점으로 선택한 것입니다. 특별한 수학적 이유는 없습니다.
Q. 초와 밀리초를 어떻게 구분하나요?
2020년대 현재 초 단위는 약 10자리(17억 대), 밀리초는 13자리(1조 700억 대)입니다. 이 도구는 1e12 기준으로 자동 판별합니다.
Q. 타임스탬프는 시간대와 무관한가요?
네. Unix 타임스탬프는 항상 UTC 기준의 절대 시간입니다. 표시할 때만 원하는 시간대로 변환합니다.
Q. 음수 타임스탬프는 무엇인가요?
1970년 1월 1일 이전 날짜를 음수 타임스탬프로 표현합니다. 예: -86400은 1969년 12월 31일입니다.