2015-01-15 2 views
4

나는 을 DateTimeOffset 있습니다는 날짜 시간에 DateTimeOffset으로 변환하고이 날짜 시간 오프셋 추가 할

DateTimeOffset myDTO = DateTimeOffset.ParseExact(
         "2015/01/15 17:37:00 -0500", "yyyy/MM/dd HH:mm:ss zzz", 
         CultureInfo.InvariantCulture); 
Console.WriteLine(myDTO); 

// 결과 =>"2015년 1월 15일 17시 37분 0초 -05 : 00"

생성 된 날짜 시간에 "-0500"

// 원하는 결과 => "1/15을 날짜 시간으로 변환이 오프셋 추가하는 방법

/2015 22시 37분 0초 "

+1

이는 이상 할 것입니다. '1/15/2015 17:37:00 -05 : 00'과 같은 의미는 일반적으로 '현지 시간은 17:37이지만 UTC보다 5 시간 늦은 것입니다.'즉, '1/15/2015 22 : 37 : 00 '이 UTC 시간이므로 유용 할 것이지만 12:37은 오프셋 *을 두 번 적용 할 것입니다. 컨텍스트에 대해 더 자세히 설명해 주시겠습니까? –

+0

@JonSkeet 죄송합니다. 내가 잘못하고 싶습니다. "1/15/2015 22:37:00" – Alex

답변

8

사용 DateTimeOffset.UtcDateTime는 :

DateTime utc = myDTO.UtcDateTime; // 01/15/2015 22:37:00 
+0

빠르지 만, 그럼에도 불구하고 나에게 이것은 갈 길입니다. – RvdV79

4

당신은 UTC 시간을 사용하는 경우 시간에 오프셋을 추가 할 필요가 없습니다. 귀하의 예에 따르면, 당신은 UTC 시간을 언급하고 있습니다. 따라서 여기에 나와있는 것처럼 DateTimeOffset.UtcDateTime을 사용할 수 있습니다.

DateTimeOffset myDTO = DateTimeOffset.ParseExact(
      "2015/01/15 17:37:00 -0500", "yyyy/MM/dd HH:mm:ss zzz", 
      CultureInfo.InvariantCulture); 
Console.WriteLine(myDTO); //Will print 1/15/2015 17:37:00 -5:00 

//Expected result would need to be 1/15/2015 22:37:00 (Which is UTC time) 
DateTime utc = myDTO.UtcDateTime; //Yields another DateTime without the offset. 
Console.WriteLine(utc); //Will print 1/15/2015 22:37:00 like asked