2015-01-15 33 views
4

我有的DateTimeOffset轉換的DateTimeOffset到DateTime和偏移添加到這個日期時間

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分00秒-05:00」

如何在導致日期時間轉換爲DateTime和增加這個偏移量「-0500」

//預期的結果=>」 1/15/2015年22時37分00秒

+1

那會很奇怪。 「1/15/2015 17:37:00 -05:00」通常意味着「當地時間是17:37,但是這比UTC晚5小時」 - 換句話說,是1/15/2015的結果22:37:00'會很有用,因爲這是UTC時間 - 但是12:37會應用偏移*兩次*。你能解釋一下你的情況嗎? –

+0

@JonSkeet oops,我做錯了,我想成爲「2015/1/15 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 
相關問題