2012-11-06 4 views
0

문자열과 같은 변환하는 가장 좋은 방법은 무엇입니까 : .NET에서 DateTime에의구문 분석 날짜 문자열의 .NET

Mon Nov 05 2012 21:27:58 GMT+0000 (GMT Standard Time) 

은? 가능한 한 많은 날짜, 즉 TimeZone을 보유하고 싶습니다.

나는이 노력하고있어하지만 GMT 손실 :

DateTime.ParseExact(date.Substring(0, 24), 
          "ddd MMM d yyyy HH:mm:ss", 
          CultureInfo.InvariantCulture); 
+0

는 소리. 문자열 형식에 따라 시간대를 구문 분석 할 수도 있습니다. – CodesInChaos

+0

[datetime.parse의 속임수 및 특정 형식으로 작동하게 만들기] (http://stackoverflow.com/questions/341175/datetime-parse-and-making-it-work-with-a-specific-format)? – lstern

+0

@lstern 그건 어떻게 속은거야? 여기서 문제는 시간을 파싱하는 것이 아니라 옵셋 및 시간대를 보존하는 것입니다. – CodesInChaos

답변

3

그것은 매우 강력한 아니지만, 그것은 당신의 예를 들어 작동 : 문자열을 분할하고 변환하는

DateTimeOffset.ParseExact(date.Substring(0, 33) // remove time zone 
           .Remove(25,3)  // remove "GMT" before offset 
           ,"ddd MMM dd yyyy HH:mm:ss zzz" 
           ,System.Globalization.CultureInfo.InvariantCulture); 
+1

'DateTime' 대신'DateTimeOffset'을 사용하여 오프셋을 보존하십시오. 물론 시간대를 별도로 저장해야합니다. – CodesInChaos

-1

쉬운 방법을 몇 가지 형식을 사용하여 datetime으로 변환합니다. 하지만 다른 형식이 있다면 어떻게 될까요?

이것을 시도하십시오. 당신이 DateTimeOffset``의 혼합합니다 (오프셋 절약,하지만 시간대) 및 시간대를 나타내는 문자열을 필요로 같은

http://www.codeproject.com/Articles/33298/C-Date-Time-Parser

샘플

string str = @"Your program recognizes string : 21 Jun 2010 04:20:19 -0430 blah blah."; 
DateTimeRoutines.ParsedDateTime pdt; 
if(str.TryParseDateTime(DateTimeRoutines.DateTimeFormat.USA_DATE, out pdt) && pdt.IsUtcOffsetFound) 
Console.WriteLine("UTC date&time was found: " + pdt.UtcDateTime.ToString());