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