我在美國時區。我試圖用C#解析以下日期。在從另一個系統接收到的以下輸入日期時,應該向他們顯示的正確值應該是什麼?顯示正確的日期時間值
1.2017-10-04T16:24:55.000-04:00
2.2017-10-04T13:14:35.000+04:00
謝謝。
我在美國時區。我試圖用C#解析以下日期。在從另一個系統接收到的以下輸入日期時,應該向他們顯示的正確值應該是什麼?顯示正確的日期時間值
1.2017-10-04T16:24:55.000-04:00
2.2017-10-04T13:14:35.000+04:00
謝謝。
準確推薦的方法是使用類似NodaTime的庫,如果您打算向用戶顯示日期並需要考慮時區。除了UTC差異之外,還有地區性DST可供考慮,而且在不使用第三方庫的情況下準確處理是一個普遍的噩夢。
首先,不要使用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()
獲得更容易的國際可兌換的價值。
目前還不清楚你在問什麼。比UTC快4小時,另一個是4小時。您可以使用[DateTime.TryParseExact](https://msdn.microsoft.com/en-us/library/system.datetime.tryparseexact(v = vs.110).aspx)將它們轉換爲'DateTime' ...您如何顯示它們取決於最終用戶的位置。 –