繁体   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