我可以理解为什么在大多数情况下执行结束时间大于开始时间是正确的,但是JodaTime库为什么对BaseInterval类型强制执行这个约束有什么具体原因吗?
这确实妨碍了我设计一台时间机器的能力,它也可以在时间上向后移动。
发布于 2015-07-08 15:02:42
因为不可能在你开始之前完成它。
在JodaTime测量系统中,时间在增加。这意味着所有的时间都是有序的,所以小的时间是在“之前”更大的时间。因此,某物的“开始”时间保证小于或等于它的“结束”时间。
对于设计上的原因,它大大简化了数学。为了比较两次重叠的情况,可以在假设起始时间在结束时间之前的基础上简化比较。如果没有这样的假设,人们将不得不检测时间间隔的“方向”,并可能得到它的“反向”,以同样的方式检测重叠。
由于时间间隔可以以这样的方式组合,从而获得两个区间的边界间隔,包含非类方向的区间打破了数学假设。例如,包含前向和后向时间方向的间隔的界的方向是什么?我认为可以提出一个“混合”方向,但这进一步使区间方向的三种状态的数学变得更加复杂。
类似地,当一个边界间隔的组件处于一个混合方向时,拒绝计算它会使所有普通用例的接口变得复杂。一个干净的,简洁的数学基础上的间隔将不得不以某种方式干净地结合方向。
https://stackoverflow.com/questions/31296437
复制相似问题