簡體   English   中英

ASP.NET Convert.ToDateTime(“ Tue,08 Sep 2009 13:31:00 -0500”)關閉一個小時

[英]ASP.NET Convert.ToDateTime(“Tue, 08 Sep 2009 13:31:00 -0500”) is off by an hour

使用ASP.NET 3.5框架,Convert.ToDateTime(“ Tue,08 Sep 2009 13:31:00 -0500”)返回時間為14:31的DateTime對象。 請注意,我在東海岸(EST -0500),所以我應該看到13:31。 我假設這與在Convert.ToDateTime中未考慮的夏令時(DST)有關。

有沒有一種優雅的方法可以解決在所有時區都可以解決的問題?

我應該知道是否有其他日期解析方法可以避免此問題?

請改用DateTimeOffset結構

DateTimeOffset.Parse("Tue, 08 Sep 2009 13:31:00 -0500")

它還具有采用TimeSpan結構 的構造函數 這應該尊重DST問題。

由於您提到了時區,因此需要研究的另一個類是TimeZoneInfo類 這些都是.NET 3.5中的新功能。 MSDN頁面上的示例返回:

Time in Eastern Daylight Time zone: 9/8/2009 3:25:58 PM
    UTC Time: 9/8/2009 7:25:58 PM
Time in Tokyo Daylight Time zone: 9/9/2009 4:25:58 AM
    UTC Time: 9/8/2009 7:25:58 PM

如果您位於東海岸,並且由於目前是東海岸的夏令時,您的時間應該為Tue, 08 Sep 2009 13:31:00 -0400 在夏時制期間,東海岸的偏移量變為-04:00

快速檢查當前偏移量的方法是

TimeSpan offset = TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now);

因此,您實際上是在解析錯誤的值。 東海岸的日期不可能是9月8日的-05:00。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM