作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我能理解为什么在大多数情况下强制结束时间大于开始时间是正确的,但是 JodaTime 库对 BaseInterval 类型强制执行该约束是否有特定原因?
这确实妨碍了我设计一台也能及时倒退的时间机器的能力。
最佳答案
因为在开始之前不可能完成某件事。
时间在 JodaTime 测量系统中递增。这意味着所有时间都是这样排序的,即较小的时间“先于”较大的时间。因此保证某事物的“开始”时间小于或等于它的“结束”时间。
至于设计原因,它大大简化了数学运算。为了比较两个时间是否重叠,可以基于开始时间在结束时间之前的假设来简化比较。如果没有这样的假设,人们将不得不检测时间间隔的“方向”,并可能得到它的“反向”以以相同的方式检测重叠。
由于时间间隔可以以这样一种方式组合,即获得两个间隔的边界间隔,因此包含非相似方向的间隔打破了数学假设。例如,包含前向和后向时间方向的区间边界的方向是什么?我认为有人可以想出一个“混合”方向,但这使间隔方向的三个状态的数学进一步复杂化。
同样,当组件处于混合方向时拒绝计算边界间隔会使所有普通用例的接口(interface)复杂化。一个干净、简洁的基于区间的数学集必须以某种方式干净地结合方向。
关于java - 为什么 JodaTime BaseInterval 的结束必须大于开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31296437/
我能理解为什么在大多数情况下强制结束时间大于开始时间是正确的,但是 JodaTime 库对 BaseInterval 类型强制执行该约束是否有特定原因? 这确实妨碍了我设计一台也能及时倒退的时间机器的
我是一名优秀的程序员,十分优秀!