java - 为什么 JodaTime BaseInterval 的结束必须大于开始?

标签 java jodatime

我能理解为什么在大多数情况下强制结束时间大于开始时间是正确的,但是 JodaTime 库对 BaseInterval 类型强制执行该约束是否有特定原因?

这确实妨碍了我设计一台也能及时倒退的时间机器的能力。

最佳答案

因为在开始之前不可能完成某件事。

时间在 JodaTime 测量系统中递增。这意味着所有时间都是这样排序的,即较小的时间“先于”较大的时间。因此保证某事物的“开始”时间小于或等于它的“结束”时间。

至于设计原因,它大大简化了数学运算。为了比较两个时间是否重叠,可以基于开始时间在结束时间之前的假设来简化比较。如果没有这样的假设,人们将不得不检测时间间隔的“方向”,并可能得到它的“反向”以以相同的方式检测重叠。

由于时间间隔可以以这样一种方式组合,即获得两个间隔的边界间隔,因此包含非相似方向的间隔打破了数学假设。例如,包含前向和后向时间方向的区间边界的方向是什么?我认为有人可以想出一个“混合”方向,但这使间隔方向的三个状态的数学进一步复杂化。

同样,当组件处于混合方向时拒绝计算边界间隔会使所有普通用例的接口(interface)复杂化。一个干净、简洁的基于区间的数学集必须以某种方式干净地结合方向。

关于java - 为什么 JodaTime BaseInterval 的结束必须大于开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31296437/

相关文章:

java - 将 AjaxEventBehavior 添加到表单的按钮可防止表单使用 Wicket 6.1 和 6.2 提交

java - 转换具有文本初始化的文件后,我的字节数组充满零的原因是什么?

java - jackson JodaTime DateTime 未序列化

java - Joda Time : new DateTime(String) vs DateTime. 解析(字符串)

java - 如何将 jodaTime 与 hibernate 一起使用

java - Java 中有很多异常是糟糕的设计吗?

java - 使用 WebDriver 获取子元素

java - Android:清除 Activity 堆栈

java - 使用 Joda-Time 计算持续时间

jsp - JodaTime JSP 标签库工作时出现异常