2017-10-09 125 views
0

我在美國時區。我試圖用C#解析以下日期。在從另一個系統接收到的以下輸入日期時,應該向他們顯示的正確值應該是什麼?顯示正確的日期時間值

1.2017-10-04T16:24:55.000-04:00 

2.2017-10-04T13:14:35.000+04:00 

謝謝。

+2

目前還不清楚你在問什麼。比UTC快4小時,另一個是4小時。您可以使用[DateTime.TryParseExact](https://msdn.microsoft.com/en-us/library/system.datetime.tryparseexact(v = vs.110).aspx)將它們轉換爲'DateTime' ...您如何顯示它們取決於最終用戶的位置。 –

回答

0

準確推薦的方法是使用類似NodaTime的庫,如果您打算向用戶顯示日期並需要考慮時區。除了UTC差異之外,還有地區性DST可供考慮,而且在不使用第三方庫的情況下準確處理是一個普遍的噩夢。

1

首先,不要使用DateTime,而是使用DateTimeOffset(或者某些NodaTime類型,如@DiskJunky提到的)。這允許您使用給定的時間偏移量解析/存儲每個值。

您提供的文本應使用默認的解析工作得好:

string test1 = "2017-10-04T16:24:55.000-04:00"; 
string test2 = "2017-10-04T13:14:35.000+04:00"; 

DateTimeOffset dateTime; 
if (DateTimeOffset.TryParse(test1, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime)) 
{ 
    Console.WriteLine("Date 1: " + dateTime); 
} 
if (DateTimeOffset.TryParse(test2, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime)) 
{ 
    Console.WriteLine("Date 2: " + dateTime); 
} 

當時間值被解析爲DateTimeOffset可以轉換並顯示它們任何你想要的......例如,讓你的美調整時間與dateTime.ToLocalTime()或與dateTime.ToUniversalTime()獲得更容易的國際可兌換的價值。