Answers:
需要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)
)。
根据上述期间的定义,划分期间实际上并没有真正的意义。例如,半个月是什么?(其长度取决于哪个月)。
添加到mikej的答案中:
一个乔达,时间 长是“物理”的时间间隔; 例如:
12000 milliseconds
<-这是一个持续时间
Joda-Time 间隔实际上是一对瞬间(开始瞬间-结束瞬间)。一个瞬间是,再次,“物理”的概念,在时间线中的一个点。例如(只是一种可能的表示法):
(2010/3/3 19:00:00.000 UTC ; 2010/3/3 20:00:00.000 UTC)
<-这是一个间隔
的间隔,然后,可以被转换为一个持续时间,而不是相反。
考虑以下两个间隔:
I1=(2010/3/3 19:00:00.000 UTC ; 2010/3/3 20:00:00.000 UTC)
I2=(2010/3/3 21:00:00.000 UTC ; 2010/3/3 22:00:00.000 UTC)
作为间隔,I1
并且I2
是不同的,这是因为终端点是不同的; 但是如果将它们转换为持续时间,我会得到相同的结果:3600000 milliseconds
。
(类比:间隔[10,12]
和[95,97]
是不同的间隔,但是它们具有相同的长度:“间隔长度”映射到持续时间)。
最后,时间段是经过一段时间后的“民事时间”,表示为几个月,几天,几小时等。它本身并不表示“物理”间隔,因此不能直接转换为持续时间(月份的长度可变...)。
这回答了问题3:您只能将一个物理时间(一个持续时间)除以2。
Period
。已经提出了使这种术语标准化的提议,但是尚未完成。