EndDate时间不接受(2400)午夜作为结束时间(C#)

时间:2012-05-02 09:12:16

标签: c#

下面的方法应该接受2400作为结束时间的结束日期时间,但结果为空;

3 个答案:

答案 0 :(得分:3)

来自DateTime.Hour属性的MSDN spec

  

小时组件,表示为0到23之间的值。

因此,在您使用的constructor for DateTime中,小时整数必须是介于0和23之间的值.24将抛出ArgumentOutOfRangeException,在您的代码中将被空catch块捕获(通常空的捕获块是一个坏主意 - 见this SO answer)。

如果您想将非标准2400作为有效时间处理,则需要为其添加特殊处理。

答案 1 :(得分:0)

ISO 8601 5.3.2区分DateTime的组合表示(例如2013-01-22 14:30:00)和未组合的仅时间表示(例如18:00)。对于未组合的仅限时间表示,为了消除当天结束时的一天的开始,ISO规范指出值24:00是24小时结束时的有效表示。 Microsoft不在.NET客户端或SQL Server中遵循此ISO规范,您将需要使用上面建议的解决方法之一。 (其他数据库,如PostgreSQL,DB2和SQLite都符合ISO规范。)

答案 2 :(得分:0)

  

如果您想将非标准2400作为有效时间处理,则需要为其添加特殊处理。

小时%2400

Modulo Operator