我希望在下载之前能快速回答一个关于 NodaTime 的问题。到目前为止,我正在阅读有关 NodaTime 及其 API 的内容,并且似乎经过深思熟虑。
我希望它可能有助于消除我在具有数据库后端、具有数据库提供程序的桌面客户端以及必须在主要浏览器上运行的 Web 客户端的应用程序中遇到的一些混乱。在各种数据库、数据库提供程序和 Web 平台上,对日期时间和时间的 ISO 8601 的支持差异很大。例如,Internet Explorer 遵循 ISO 8601,但 SQL Server 不遵循;Web UI 时间选择器没有,因为 Chrome 没有。
问题:在 NodaTime 中,24:00 是有效的时间值吗?24 是其 Time 构造函数的 hours 参数的有效参数吗?
背景:ISO 8601 允许午夜的两种表示形式:00:00 表示“今晨午夜”,24:00 表示“今晚午夜”。当 DateTime 对象在时间线上时,时间元素为 24:00 的日期与第二天的 00:00 重合。它们是具有两种不同表示的同一时间线瞬间,两种表示均根据 ISO 有效。
Time-only 值与时间线分离。00:00 的时间出现在分离的 24 小时一天的开始,而 24:00 的仅时间值是 00:00 之后的 24 小时。Time 类型应该接受 24 小时。当 24 是小时时,秒、毫秒和刻度的最大值为 0(除非涉及模算术并且时间翻转,因此 24:01 是 00:01——但 ISO 对此实现细节无话可说, IIRC)。