多年来,我遇到了对一天结束的不同解释。 但是在比较日期和时间间隔时,正确的表示方式是什么?
我发现有些人似乎更喜欢23:59:59,而其他人则使用00:00:00。
在 StackOverflow 上,我什至发现了一些与24:00:00的使用和显示有关的问题实例,但是这个问题的范围更侧重于确定如何划分两天。
换句话说,我们感兴趣的问题是确定一天到底在哪里结束,下一天从哪里开始。在许多甚至需要最基本的时间间隔比较或计算的应用程序中,这似乎是一个常见问题。
为了澄清上述解释,以下是代表 2014 年 1 月 1日在三种不同解释下的三个示例:
- 准午夜:
2014-01-01 00:00:00 - 2014-01-01 23:59:59
- 午夜锋利:
2014-01-01 00:00:00 - 2014-01-02 00:00:00
- 军事午夜:
2014-01-01 00:00:00 - 2014-01-01 24:00:00
虽然我确实觉得准午夜解释是最直观的解释,但它似乎也需要相当多的样板才能正确地指出时间。此外,当没有正确处理一天的最后一秒时,可能会遇到边缘情况,或者在扫描大量间隔以围绕这些差距进行测试时,可能会影响性能。
同样,军事午夜解释似乎也需要一些样板来设置该划分点的双重表示。没有太多思考,我想不出使用这种方法的许多并发症。
最后,午夜尖锐的解释似乎是最一致的一个很好的候选者。与午夜准不同,它不需要样板来设置时间,并且它自然地与运算符<
、<=
和.>
>=
值得注意的是,PHP 语言已经解释2014-01-01 24:00:00
为2014-01-02 00:00:00
,具有将日期转换为深夜解释的效果。
在示例性 FLOSS 库或标准中是否有明显的先例可以证明使用一种解释而不是另一种解释?