C#

[개발] ISO 8601 포맷 지정 방법

메이야 2026.09.03 21:56 댓글 0 조회 219

1. 표준 포맷 문자열 사용

C#은 ISO 8601과 호환되는 표준 포맷 지정자를 제공합니다:


포멧 지정자예시 출력설명
"o"2026-03-11T10:44:30.0000000+09:00가장 완전한 ISO 8601 표현. 시간대 오프셋 포함
"s"2026-03-11T10:44:30ISO 8601 기본 형식. 시간대 정보 없음
"u"2026-03-11 01:44:30ZUTC 기준 ISO 8601 표현


2. 직접 커스텀 포맷 지정

원하는 형태로 직접 지정할 수도 있습니다:

C#
DateTime now = DateTime.UtcNow;
string iso8601 = now.ToString("yyyy-MM-ddTHH:mm:ssZ");
Console.WriteLine(iso8601); 
// 출력: 2026-03-11T01:44:30Z
  • Z는 UTC를 의미합니다.
  • 로컬 시간대까지 포함하려면 DateTimeOffset을 쓰는 것이 안전합니다:
C#
DateTimeOffset now = DateTimeOffset.Now;
string iso8601 = now.ToString("o"); 
// 출력: 2026-03-11T10:44:30.1234567+09:00


⚠️ 주의할 점

  • DateTime vs DateTimeOffset: DateTime은 시간대 정보가 없을 수 있으므로, 국제 표준 교환 시에는 DateTimeOffset을 권장합니다.
  • UTC 변환 필요 여부: 글로벌 API 통신 시에는 DateTime.UtcNow를 사용해 "Z"(Zulu/UTC) 표기를 붙이는 것이 일반적입니다.
  • 밀리초/틱 포함 여부: "o" 포맷은 소수점 이하 초 단위까지 포함하므로, 단순히 "s" 포맷보다 더 정밀합니다.


👉 정리하면, **간단히 ISO8601 스타일을 쓰려면 date.ToString("o")**를 쓰는 것이 가장 안전하고 범용적입니다.
 혹시 특정 API에서 "yyyy-MM-ddTHH:mm:ssZ" 같은 UTC-only 형식을 요구한다면 DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ssZ")를 쓰면 됩니다.

목록
댓글 0