.NET Ticks → Unix 타임스탬프 변환기
.NET Ticks을(를) Unix 시간으로 변환합니다. 정확한 공식과 큰 값 지원. 출력: 초, 밀리초, ISO 8601, 가독 형식.
0001-01-01 이후의 100-ns 간격
현재 시간 — .NET DateTime.Ticks—
Unix 타임스탬프(초)—
.NET 틱이란?
.NET에서 DateTime.Ticks와 TimeSpan.Ticks는 시간을 100나노초 단위로 측정합니다. DateTime 틱 수는 선행 그레고리력의 0001년 1월 1일 00:00:00 이후 경과한 100나노초 간격의 수입니다.
- epoch: 0001-01-01 00:00:00
- 해상도: 100나노초 틱(초당 10,000,000)
- 현재 값은 약 6.4 × 10^17
- C#: DateTime.UtcNow.Ticks, DateTimeOffset.UtcNow.Ticks
.NET 틱을 Unix 타임스탬프로 변환하는 법
0001-01-01과 1970-01-01 사이에는 62,135,596,800초가 있습니다. 틱을 10,000,000으로 나눠 서기 1년 이후의 초를 구한 뒤 그 오프셋을 뺍니다.
- Unix seconds = Ticks / 10000000 − 62135596800
- Unix milliseconds = Ticks / 10000 − 62135596800000
- 예: 638355968000000000 → 1700000000 → 2023-11-14 22:13:20 UTC
- C#에서: new DateTimeOffset(dt).ToUnixTimeSeconds()가 대신 해 줌
C# 코드와 엣지 케이스
최신 .NET은 DateTimeOffset.ToUnixTimeSeconds()와 ToUnixTimeMilliseconds(), 역방향용 DateTimeOffset.FromUnixTimeSeconds()를 제공합니다. 직렬화된 데이터와 상호 운용할 때만 틱을 직접 사용하세요. DateTime.Ticks는 DateTimeKind를 무시하므로 항상 먼저 UTC로 정규화하세요.
- C#: var unixSeconds = new DateTimeOffset(dt.ToUniversalTime()).ToUnixTimeSeconds();
- C#: var dt = DateTimeOffset.FromUnixTimeMilliseconds(ms).UtcDateTime;
- 틱 0 = 0001-01-01; DateTime.MaxValue.Ticks = 3155378975999999999
- 값이 JavaScript 안전 정수를 초과하므로 이 변환기는 BigInt를 사용
관련 타임스탬프 형식 변환기
라이브러리 및 직렬화 참고
틱은 오래된 .NET 직렬화 형식과 JSON 관례에 나타납니다. 다음에 유의하세요:
- 레거시 Microsoft JSON 날짜: "/Date(1700000000000+0000)/"는 밀리초를 감쌈(틱이 아님)
- DateTimeOffset.UnixEpoch은 최신 .NET의 표준 영점
- DateTime.MaxValue.Ticks = 3155378975999999999; 이렇게 큰 값은 거의 확실히 '없음' 센티넬을 나타냄
- TimeSpan.Ticks는 같은 단위지만 기간으로 측정됨; DateTime 틱에서 TimeSpan 틱을 무턱대고 빼지 말 것
- Newtonsoft.Json과 System.Text.Json 둘 다 기본값이 ISO 8601 — 선택할 수 있다면 원시 틱보다 이를 선호
FAQ
- 1초는 몇 틱인가?
- 정확히 10,000,000틱 — 각 틱은 100나노초입니다.
- .NET 틱과 Windows FILETIME의 차이는?
- 둘 다 100나노초 단위를 쓰지만, .NET 틱은 0001-01-01부터, FILETIME은 1601-01-01부터 셉니다. 둘은 504,911,232,000,000,000틱의 고정 오프셋만큼 다릅니다.
- C#의 DateTime에서 Unix 시간을 얻으려면?
- new DateTimeOffset(dateTime.ToUniversalTime()).ToUnixTimeSeconds() 또는 .ToUnixTimeMilliseconds()를 사용하세요.