타임스탬프 변환기
Unix 타임스탬프와 읽기 쉬운 날짜 간 즉시 변환 — 더불어 Windows FILETIME, .NET Ticks, LDAP/AD, Chrome WebKit, Excel OADate까지 지원. 값을 붙여넣기만 하면 형식을 자동으로 감지하고, 원클릭 복사가 가능합니다.
변환기
0 0 타임스탬프 → 날짜
날짜 → 타임스탬프
Unix 타임스탬프란?
Unix 타임스탬프(Unix 에포크 시간 또는 POSIX 시간이라고도 함)는 1970-01-01 00:00:00 UTC(Unix 에포크) 이후 경과한 초 수입니다. 프로그래밍에서 시점을 나타내는 가장 일반적인 방법입니다.
예를 들어, 1700000000은 2023년 11월 14일 22:13:20 UTC에 해당합니다.
Unix 타임스탬프의 특징:
- 시간대 독립적 — 항상 UTC 기준
- 연속적 — 대부분의 구현에서 윤초 미포함
- 간결 — 단일 정수로 전체 날짜 표현
초 vs 밀리초
Unix 타임스탬프는 두 가지 일반적인 해상도가 있습니다:
| 초 | 밀리초 | |
|---|---|---|
| 예시 | 1700000000 | 1700000000000 |
| 정밀도 | 1초 | 1밀리초 |
| 사용 | Unix/Linux API, 대부분의 데이터베이스 | JavaScript (Date.now()), Java, 로깅 시스템 |
| 자릿수 | ~10자리 | ~13자리 |
구별 방법: 숫자가 13자리 이상이면 밀리초입니다. 이 변환기는 해상도를 자동으로 감지합니다 — 숫자를 붙여넣기만 하세요.
일반적인 사용 사례
- 로그 디버깅 — 서버 로그의 타임스탬프를 읽기 쉬운 시간으로 변환하여 이벤트 추적
- API 통합 — 많은 REST API가 날짜 필드에 Unix 타임스탬프 사용
- 데이터베이스 쿼리 — 에포크 값을 사용하여 시간 범위로 레코드 조회
- 스케줄링 — 타임스탬프 연산으로 지연 계산 또는 향후 이벤트 예약
- UUID v7 — UUID v7은 처음 48비트에 밀리초 Unix 타임스탬프를 인코딩합니다. 디코딩하여 UUID가 언제 생성되었는지 확인
- Active Directory 관리 —
lastLogon,pwdLastSet,accountExpires같은 LDAP 타임스탬프를 읽기 쉬운 날짜로 변환하여 사용자 감사 - Excel / Office 자동화 — 스프레드시트 및
DateTime.FromOADate연동 시 OADate 일련 번호 디코딩 - Chrome 포렌식 — 디버깅이나 디지털 포렌식을 위해
History,CookiesSQLite WebKit 타임스탬프 읽기
Windows FILETIME이란?
Windows FILETIME은 1601-01-01 00:00:00 UTC 이후 100나노초 간격을 세는 64비트 값입니다. Win32 API, NTFS 파일 시스템, COM/OLE의 기본 시간 형식입니다.
FILETIME 구조체는 값을 두 개의 32비트 DWORD(dwLowDateTime과 dwHighDateTime)로 저장합니다. GetFileTime(), CoFileTimeNow(), NTFS 마스터 파일 테이블(MFT) 레코드에서 만나게 됩니다.
변환 공식:
unix_seconds = (filetime / 10000000) - 11644473600예를 들어, 133592755356230000 → 2024-05-04 04:32:15 UTC입니다. 이 변환기는 ~3 × 10¹⁷ 미만의 18자리 값을 FILETIME으로 자동 감지합니다.
.NET DateTime Ticks란?
.NET Ticks는 0001-01-01 00:00:00 UTC(서기 1년) 이후 100나노초 간격을 세는 64비트 부호 있는 정수입니다. C#/.NET에서 DateTime의 내부 저장소이며 DateTime.Now.Ticks로 접근할 수 있습니다.
범위는 0001-01-01부터 9999-12-31까지 아우르며, 단일 long 값은 최대 약 3.16 × 10¹⁸입니다. FILETIME(1601 기반)과 달리 .NET ticks는 음수 값을 피하고 달력 연산을 단순화하기 위해 1년부터 시작합니다.
예를 들어, 638514336000000000 ticks → 2024-05-16 00:00:00 UTC입니다. ~3 × 10¹⁷ 이상의 값은 .NET ticks로 감지되며, 그 미만에서는 FILETIME일 가능성이 높습니다.
LDAP / Active Directory 타임스탬프란?
LDAP 타임스탬프(Microsoft Active Directory에서 사용)는 수치적으로 FILETIME과 동일합니다 — 1601-01-01 UTC 이후 100나노초 간격입니다. 차이점은 맥락뿐입니다: lastLogon, lastLogonTimestamp, pwdLastSet, accountExpires 같은 AD 속성이 LDAP 스키마 아래 FILETIME 값을 저장합니다.
AD 관리자는 사용자 활동과 비밀번호 만료를 감사하기 위해 이 값을 정기적으로 변환합니다. PowerShell에서:
[DateTime]::FromFileTime($value).ToString('yyyy-MM-dd HH:mm:ss')예를 들어, 132514560000000000 → 2020-12-03 00:00:00 UTC입니다. accountExpires가 9223372036854775807(Int64.MaxValue)이면 "만료 없음"을 의미합니다.
Chrome / WebKit 타임스탬프란?
Chrome과 WebKit 타임스탬프는 1601-01-01 UTC 이후 마이크로초(100나노초가 아님)를 셉니다. Chrome의 History, Cookies, Login Data SQLite 데이터베이스에 나타나며, 디버깅, 포렌식, 데이터 복구에 유용합니다.
단위가 μs(100ns가 아님)이므로 같은 순간에 대해 FILETIME보다 10배 작은 값을 가집니다. 현재 시대 값은 17자리(~1.3 × 10¹⁶)입니다.
Chrome 방문 기록을 SQL로 조회하려면:
SELECT datetime(time / 1000000 - 11644473600, 'unixepoch') AS visit_time
FROM urls ORDER BY visit_time DESC LIMIT 10;예를 들어, 13317696000000000 → 2023-01-09 00:00:00 UTC입니다.
Microsoft OADate / Excel 일련 번호란?
OADate(OLE Automation Date)는 1899-12-30 이후의 일수를 세는 double입니다. 소수 부분은 하루 중 시간을 나타냅니다(0.5 = 정오). Excel, Google Sheets, Office 자동화가 모두 이 일련 번호 형식을 내부적으로 사용합니다.
왜 1900-01-01이 아니라 1899-12-30일까요? Excel은 Lotus 1-2-3의 1900년 윤년 버그(1900년은 윤년이 아니었지만 Lotus는 윤년으로 처리)를 의도적으로 재현합니다. 에포크를 이틀 뒤로 밀어 레거시 버그와의 호환성을 유지합니다.
예를 들어, 45678.5 → 2025-01-21 12:00:00입니다. C#에서는 DateTime.FromOADate(45678.5)를, Excel에서는 =DATE(2025,1,21)이 45678을 반환합니다.
자주 묻는 질문
2038년 문제란 무엇인가요? 32비트 부호 있는 정수의 Unix 타임스탬프는 2147483647(2038년 1월 19일 03:14:07 UTC)에서 최대값에 도달합니다. 여전히 32비트 time_t를 사용하는 시스템은 오버플로우가 발생합니다. 대부분의 현대 시스템은 이미 64비트 타임스탬프로 전환되었으며, 2920억 년 동안 오버플로우되지 않습니다.
이 도구는 시간대를 어떻게 처리하나요? Unix 타임스탬프는 본질적으로 UTC입니다. 이 변환기는 UTC 표현과 브라우저의 로컬 시간대를 모두 표시합니다.
음수 타임스탬프를 사용할 수 있나요? 네. 음수 Unix 타임스탬프는 에포크(1970-01-01 00:00:00 UTC) 이전의 날짜를 나타냅니다. 예를 들어, -86400은 1969년 12월 31일 00:00:00 UTC — 에포크 정확히 하루 전입니다.
FILETIME과 LDAP 타임스탬프의 차이는 무엇인가요? 수치적으로는 동일합니다 — 둘 다 1601-01-01 UTC 이후 100나노초 간격입니다. "FILETIME"은 Win32/COM의 이름이고, "LDAP 타임스탬프"는 lastLogon 같은 Active Directory 속성에 저장된 동일한 값을 가리킵니다. 변환 공식도 동일하게 사용합니다.
.NET DateTime.Ticks는 왜 1년부터 시작하나요? .NET 달력은 (그레고리력의 관례적 시작인) 0001-01-01부터 시작하여 모든 유효한 날짜가 양수 tick 값을 갖도록 합니다. 이는 FILETIME의 1601 에포크에서 발생할 수 있는 부호 처리 복잡성을 피하고 0001–9999 전체 범위의 날짜 연산을 단순화합니다.
OADate 에포크가 1899년 12월 30일인 이유는? Excel은 Lotus 1-2-3에서 물려받은 버그 때문에 1900년을 윤년으로 처리했습니다(실제로는 윤년이 아님). 1900년 3월 1일 같은 날짜가 Excel과 실제 일치하도록, OLE Automation 에포크는 "1900년 1월 1일" 시작보다 이틀 앞선 1899-12-30으로 설정되었습니다 — 가상의 1900년 2월 29일을 보정하는 것입니다.