C# Unix 타임스탬프 스니펫
현재 에포크 초, 밀리초, DateTimeOffset 변환, ISO 8601 출력, 날짜 문자열에서 타임스탬프 파싱을 위한 C# 예제.
Current Unix timestamp (seconds)
DateTimeOffset.UtcNow.ToUnixTimeSeconds()Current Unix timestamp (milliseconds)
DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()DateTimeOffset from Unix timestamp
DateTimeOffset.FromUnixTimeSeconds(1700000000)
DateTimeOffset.FromUnixTimeMilliseconds(1700000000000)ISO 8601 string from timestamp
DateTimeOffset.FromUnixTimeSeconds(1700000000)
.UtcDateTime
.ToString("O")Timestamp from DateTimeOffset
var dt = DateTimeOffset.Parse("2023-11-15T06:13:20Z");
dt.ToUnixTimeSeconds();
dt.ToUnixTimeMilliseconds();C# 타임스탬프 기본
최신 C#은 Unix 타임스탬프 작업에 DateTimeOffset을 사용해야 합니다. DateTimeOffset.UtcNow.ToUnixTimeSeconds()는 Unix 초를, ToUnixTimeMilliseconds()는 JavaScript 호환 밀리초를 반환합니다.
DateTimeOffset 값 변환
epoch 값을 DateTimeOffset으로 변환하려면 FromUnixTimeSeconds 또는 FromUnixTimeMilliseconds를 사용하세요. 저장은 UTC로 유지하고, ISO 8601 문자열이 필요하면 왕복용 O 형식으로 형식화하세요.
C# 운영 참고 사항
DateTimeOffset은 값에 오프셋을 유지하므로 타임스탬프 작업에서 보통 DateTime보다 안전합니다. 비교와 영속화에는 UTC 시점을 저장하고, 표시할 때만 현지 시간대로 변환하세요. 통합 대상이 초인지 밀리초인지 밝히지 않고 '에poch 시간'이라고 말하면 주의하세요.
- 표준 Unix 초에는 DateTimeOffset.UtcNow.ToUnixTimeSeconds()를 사용
- JavaScript 호환 값에는 ToUnixTimeMilliseconds()를 사용
- 초로 문서화된 API 값을 읽을 때는 FromUnixTimeSeconds()를 사용
- 로그와 JSON의 왕복 ISO 8601 문자열에는 O 형식을 사용
FAQ
- 타임스탬프 코드는 DateTime과 DateTimeOffset 중 무엇을 써야 하나?
- Unix 타임스탬프 작업에는 오프셋 맥락을 보존하는 DateTimeOffset을 권장합니다. Unix 초·밀리초 직접 헬퍼도 제공합니다.
- O 형식은 무엇을 하나?
- O 형식은 왕복 가능한 ISO 8601 값을 씁니다. 정확한 순간이 파싱을 견뎌야 하는 로그, JSON, 테스트에 유용합니다.
- C# 변환을 검증하려면?
- DateTimeOffset.FromUnixTimeSeconds 또는 FromUnixTimeMilliseconds로 값을 되돌리고, O로 형식화한 뒤, 그 UTC 출력을 기대 타임스탬프와 비교하고 나서 값을 저장하세요.