在Joda-Time 2中,三种时间跨度之间有什么区别:
持续时间
为什么我们需要三堂课?
哪一个表现更好?
为什么不实现对Period,Duration或Interval实例的 划分 ?例如p = p.divideBy(2);
p = p.divideBy(2);
需要3个类,因为它们表示不同的概念,因此,选择适合工作的类而不是相对性能是一个问题。从文档中,我用 斜体 添加了注释:
的 间隔 在约达时间表示时间从一个毫秒时刻到另一时刻的间隔。这两个时刻都是日期时间连续体中完全指定的时刻,并带有时区。 定义了特定时间,例如,这可能是昨天20:00:00GMT和今天早上09:00:00GMT之间的时间间隔。
甲 持续时间 在约达时间表示以毫秒计的时间的持续时间。持续时间通常是从一个间隔中获得的。 即我们可以从间隔结束处减去开始以得出持续时间
甲 期间 在约达时间表示一段时间中的字段来定义,例如,3年5月2天及7小时。这与持续时间的不同之处在于,它以毫秒为单位不精确。通过指定相对的瞬间(包括时间和时区),只能将一个时期解析为精确的毫秒数。 例如,考虑一年的期限,如果将其添加到1月1日,我们将始终到达下一个1月1日,但是持续时间取决于中间年份是否为a年。 同样,如果我们在一个月的1号加上1个月,那么我们将在下个月的1号到达,但是持续时间(以毫秒为单位)将根据相关月份而有所不同
对于问题3,确实没有必要使用特定的方法来划分持续时间,因为我们总是可以从持续时间中获取毫秒数long(使用getMillis()),对其进行划分并构造新的持续时间(使用new Duration(long duration))。
long
getMillis()
new Duration(long duration)
根据上述期间的定义,划分期间实际上并没有真正的意义。例如,半个月是什么?(其长度取决于哪个月)。