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

Pra*_*pta 9 c# timezone 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);
Run Code Online (Sandbox Code Playgroud)

执行后,我收到此错误:

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

Rah*_*thi 12

尝试检查时间是否模糊或有效时间.由于日光变化,您提到的时间即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
Run Code Online (Sandbox Code Playgroud)

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

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

背景资料

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

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

TimeZoneInfo.IsInvalidTime
Run Code Online (Sandbox Code Playgroud)