DateTime解析错误:提供的DateTime表示无效时间

我有一种情况,日期是"3/13/2016 2:41:00 AM" 。 当我按时区转换日期时,我收到错误。

 DateTime dt = DateTime.Parse("3/13/2016 2:41:00 AM"); DateTime Date_Time = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(dt, "Eastern Standard Time", "GMT Standard Time"); Response.Write(dt); 

执行后,我收到此错误:

提供的DateTime表示无效时间。 例如,当向前调整时钟时,跳过的时间段中的任何时间都是无效的。 参数名称:dateTime

尝试检查时间是否模糊或有效时间。 由于日光变化 ,你提到的时间即2:41:00 AM不存在,因为时钟提前1小时移动,因此日期无效或模棱两可。

 2016 Sun, 13 Mar, 02:00 CST → CDT +1 hour (DST start) UTC-5h Sun, 6 Nov, 02:00 CDT → CST -1 hour (DST end) UTC-6h 

您还可以参考此博客: System.TimeZoneInfo:使用时间上的模糊和无效点

System.TimeZoneInfo(当前作为.NET Framework 3.5 Beta 1的一部分提供)包含用于检查DateTime实例是否表示特定时区中的模糊或无效时间的方法。 这些方法对于validation用户提供的时间点特别有用。

背景资料

调整夏令时间的时区(在大多数情况下通过将时钟时间向后或向前移动1小时)在时间线中有间隙和重复 – 时钟时间通过调整向前或向后移动。 我们以太平洋标准时间为例。 2007年太平洋标准时间(太平洋标准时间)在3月的第二个星期日上午02:00(“春季前进”)更改为太平洋夏令时(PDT),然后在第一个星期日的02:00 AM(“退回”)返回十一月

要检查时间是否有效,您可以使用:

 TimeZoneInfo.IsInvalidTime