2009-10-08 7 views
5

문자열이 "2009-10-08 08 : 22 : 02Z"이고 ISO 8601 형식입니다..NET에서 ISO 8601 문자열을 DateTime으로 구문 분석합니까?

이 형식을 파싱하려면 어떻게 DateTime을 사용합니까?

+4

ISO 8601은 시간대 오프셋을 지정할 수도 있습니다 (예 : "2009-10-08T12 : 52 : 02 + 04 : 30"은 위와 같은 시간 임). 그러나 답변 중 어느 것도이 문제를 해결하지 못했습니다 ... –

답변

4

아니요, ISO 8601이 아닙니다. Valid ISO 8601 표현은 시간과 날짜 부분 사이에 T이됩니다.

DateTime은 유효한 ISO 8601 형식을 기본적으로 처리 할 수 ​​있습니다. 그러나이 특정 표현에 문제가있는 경우 DateTime.ParseExact을 시도하고 형식 문자열을 제공 할 수 있습니다.

+3

Wiki에서 건배하지만 두 형식 모두 표시 – Kaya

+2

"u"또는 "s"중 하나를 사용하여 문자열을 구문 분석하지 못했지만 T를 공백으로 쉽게 대체 할 수 있습니다. 이것은 작동하는 것 같습니다. NET 2.0과 함께 VB .NET을 사용하고 있습니다. –

+0

@romkyns 답변이 나에게 맞는 것 같습니다. "ISO-8601 표준"문서에서 3.4.3 및 4.3.2 장에서 날짜와 시간이 표시 될 때 "T"가 필요하다는 것을 읽었습니다. 예제 B.1.3도 참조하십시오. 그리고 문제의 제시된 형식의 날짜는 기본적으로 처리됩니다. – StefanG

19
string txt= "2009-10-08 08:22:02Z"; 
DateTime output = DateTime.ParseExact(txt, "u", System.Globalization.CultureInfo.InvariantCulture); 

날짜 시간 클래스 형식 I합니다 (T 분리기)를 ISO 포맷 생각

, "S"대신 "U"의 사용 U의 standard format string을 지원한다. 또는 두 형식을 모두 지원하려면

string txt= "2009-10-08 08:22:02Z"; 
DateTime output = DateTime.ParseExact(txt, new string[] {"s", "u"}, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None); 

을 사용하십시오.

관련 문제