为什么 JodaTime BaseInterval 的结束必须大于开始?
Why must end be greater than start for a JodaTime BaseInterval?
我能理解为什么在大多数情况下强制结束时间大于开始时间是正确的,但是 JodaTime 库对 BaseInterval 类型强制执行该约束是否有特定原因?
这真的妨碍了我设计一台也能回到过去的时间机器的能力。
因为不可能在开始之前就完成。
JodaTime 测量系统中的时间正在递增。这意味着所有时间都是这样排序的,即较小的时间是 "before" 较大的时间。因此,某物的 "start" 时间保证小于或等于它的 "end" 时间。
至于设计原因,它大大简化了数学运算。为了比较两个时间是否重叠,可以基于开始时间在结束时间之前的假设来简化比较。如果没有这样的假设,人们将不得不检测一个时间间隔的 "direction",并可能得到它的 "reverse direction" 以相同的方式检测重叠。
由于时间间隔可以以这样一种方式组合,即获得两个间隔的边界间隔,包含非相似方向的间隔打破了数学假设。例如,包含前向和后向时间方向的区间边界的方向是什么?我想有人可以想出一个 "mixed" 方向,但这使数学更加复杂,具有三个区间方向状态。
同样,当组件处于混合方向时拒绝计算边界间隔会使所有普通用例的接口复杂化。基于间隔的干净、简洁的集合数学必须以某种方式干净地结合方向。
我能理解为什么在大多数情况下强制结束时间大于开始时间是正确的,但是 JodaTime 库对 BaseInterval 类型强制执行该约束是否有特定原因?
这真的妨碍了我设计一台也能回到过去的时间机器的能力。
因为不可能在开始之前就完成。
JodaTime 测量系统中的时间正在递增。这意味着所有时间都是这样排序的,即较小的时间是 "before" 较大的时间。因此,某物的 "start" 时间保证小于或等于它的 "end" 时间。
至于设计原因,它大大简化了数学运算。为了比较两个时间是否重叠,可以基于开始时间在结束时间之前的假设来简化比较。如果没有这样的假设,人们将不得不检测一个时间间隔的 "direction",并可能得到它的 "reverse direction" 以相同的方式检测重叠。
由于时间间隔可以以这样一种方式组合,即获得两个间隔的边界间隔,包含非相似方向的间隔打破了数学假设。例如,包含前向和后向时间方向的区间边界的方向是什么?我想有人可以想出一个 "mixed" 方向,但这使数学更加复杂,具有三个区间方向状态。
同样,当组件处于混合方向时拒绝计算边界间隔会使所有普通用例的接口复杂化。基于间隔的干净、简洁的集合数学必须以某种方式干净地结合方向。