是否有包含/排除时间间隔结束的标准? java.time & Half-Open关于 java.time
我想知道是否有标准或“正常”的方法来解释时间间隔数据端点,相对于定义端点的值的包容性/排他性。但请注意,我问的是标准(或最常见的)惯例是什么(如果有的话),而不是关于您个人偏好的论文。如果您真的想提供论文,请将其附加到某人已发布的标准或有关此事的标准文本的参考中。开放标准(我不必付费阅读)是首选,除非它们在:)存在根本缺陷。
当然,从A到B的时间间隔有4种可能性:
- (A, B) - 两端都是排他性的。
- [A, B] - 两端都是包容性的。
- [A, B) - 开始是包容性的,结束是排他性的
- (A, B] - 开始是排他性的,结束是包容的
这些中的每一个都有不同的特征(正如我所看到的,请随时指出更多)
[A, B] 约定将具有看似不方便的属性,即 B 包含在内在 [A, B] 和 [B, C] 中。例如,如果 B 表示午夜边界,并且您试图确定它落在哪一天,则这尤其不方便。此外,这意味着计算间隔的持续时间略有刺激性,因为[A,B]其中A = B的长度应为1,因此[A,B]的持续时间为(B - A)+ 1
类似地,(A,B)公约的难度是B既不属于(A,B)也不属于(B,C)......继续用日边界进行类比,午夜将不是任何一天的一部分。这在逻辑上也很不方便,因为[A, B]其中A = B是持续时间小于零的非意义区间,但反转A和B并不能使其成为有效的区间。
所以我想我想要[A,B)或(A,B],我不知道如何在它们之间做出决定。
因此,如果有人有标准文档的链接,请参考标准文本或类似文本,以澄清约定,这将是伟大的。或者,如果您可以链接各种或多或少完全不同意的标准文档和/或参考文献,那么我可以选择一个似乎对CMA具有足够权限并完成:)。
最后,我将使用Java,因此我特别容易受到在Java中运行良好的答案的影响。