我希望在下载NodaTime之前快速回答一个关于NodaTime的问题。到目前为止,我正在阅读有关NodaTime及其API的内容,看起来非常仔细。
我希望它可以帮助消除我在具有数据库后端的应用程序中遇到的一些混乱,具有数据库提供程序的桌面客户端以及必须在主要浏览器上运行的Web客户端。对日期时间和时间的ISO 8601的支持在各种数据库,数据库提供程序和Web平台上有很大差异。例如,Internet Explorer遵循ISO 8601,但SQL Server不遵循; web UI timepickers不会因为Chrome没有。
问题:在NodaTime中,24:00是有效的时间值吗? 24是时间构造函数的hours参数的有效参数吗?
背景:ISO 8601允许两个午夜的表示:00:00表示“今天午夜”,24:00表示“今晚午夜”。当DateTime对象 on 时间线时,时间元素24:00的日期与00:00的第二天一致。它们是具有两种不同表示的相同时间线瞬间,两种表示均符合ISO。
仅限时间值与时间线分离。 00:00的时间发生在分离的24小时开始,24:00的仅时间值是00:00后的24小时。时间类型应该在一小时内接受24。当24是小时时,秒和毫秒和刻度的最大值为0(除非涉及模运算且时间翻转,因此24:01为00:01 - 但ISO对此实现细节没有任何说明,这个)。
答案 0 :(得分:1)
我们在解析LocalDateTime
时接受24:00,但不 24:01。
这是issue 153,在revision f7ac0365d8ca中实现。
不幸的是,这是在1.0发布之后,因此您需要获取当前代码,或者等待1.1发布(希望很快)。
在解析LocalTime
时,我们不当前接受它。如果你想要,请记录一个功能请求 - 我们可能会看一下它的1.2(它有很多文本功能),虽然我不确定表示的样子。 (LocalTime
本身并不支持“午夜结束”的想法。)