當我試圖使用的TryParse方法來分析"2017-09-25T11:06:55+00:00"
日期字符串,我得到下面的輸出:問題與日期時間解析
{9/25/2017 7:06:55 AM}
因此,它看起來像11時許被越來越轉化爲上午7時不知道爲什麼這發生了什麼?是否因爲+00:00??
我需要做什麼以便解析的日期時間輸出是相同的:即{9/25/2017 11:06:55 AM}
?
我嘗試使用當前區域/文化和日期時間樣式。假設本地但沒有運氣。 (注:我在東部時區)
謝謝。
當我試圖使用的TryParse方法來分析"2017-09-25T11:06:55+00:00"
日期字符串,我得到下面的輸出:問題與日期時間解析
{9/25/2017 7:06:55 AM}
因此,它看起來像11時許被越來越轉化爲上午7時不知道爲什麼這發生了什麼?是否因爲+00:00??
我需要做什麼以便解析的日期時間輸出是相同的:即{9/25/2017 11:06:55 AM}
?
我嘗試使用當前區域/文化和日期時間樣式。假設本地但沒有運氣。 (注:我在東部時區)
謝謝。
您正在使用UTC時區(+00:00),但很明顯,您或您的PC位於-04:00時區。
如果你可以使用DateTimeOffset,那麼我傾向於選擇它。您可以保留時區信息,並且您可以訪問本對象和UTC對象的日期時間屬性。
var dt = DateTimeOffset.Parse("2017-09-25T11:06:55+00:00");
Console.WriteLine(dt.DateTime); // 9-25 at 11:06
Console.WriteLine(dt.UtcDateTime); // 9-25 at 11:06
Console.WriteLine(dt.LocalDateTime); // 9-25 at 07:06
如果你知道你總是會被處理UTC,你可以通過調整萬能像這樣解析:
var dt = DateTime.Parse("2017-09-25T11:06:55+00:00", CultureInfo.CurrentCulture, DateTimeStyles.AdjustToUniversal);
Console.WriteLine(dt); // 9-25 at 11:06
感謝Trio.No,它並不總是UTC。所以下面的代碼就可以了:DateTimeStyles styles = DateTimeStyles.AssumeLocal; const string utcIdenfitifier =「+00:00」; (date.Contains(utcIdenfitifier)) styles = DateTimeStyles.AdjustToUniversal; } 如果(DateTime.TryParse(日期,CultureInfo.CurrentCulture,樣式,出retVal的)) { 返回retVal的; } – Shirish
同樣,你可以使用類似這樣的東西:var dto = DateTimeOffset.Parse(「2017-09-25T11:06:55 + 00:00」);返回dto.Offset == TimeSpan.Zero? dto.UtcDateTime:dto.LocalDateTime; – Trioj
當你分析它最初它是正確的值,它是剛剛調整到您的時區。你可以用ToUniversalTime
迫使它:
DateTime.Parse("2017-09-25T11:06:55+00:00").ToUniversalTime().ToString("yyyy/MM/dd HH:mm:ss tt")
輸出
"2017/09/25 11:06:55 AM"
你要正確地分析UTC日期時間,並有2017年9月25日上午11時06分55秒,而不是2017年9月25日上午7:06:55。 +00:00是不正確的UTC格式,您需要將其更改爲「2017-09-25T11:06:55z」。
這是一個UTC時間戳,你得到的可能是您的本地時間。通常最好將代碼和數據庫中的所有日期保持爲UTC,並使用本地時間進行顯示。 – juharr