时间:周期,时间间隔和持续时间有什么区别?
在Joda-Time 2中,三种时间跨度有什么区别:
持续时间
为什么我们需要三班?
哪一个表现更好?
为什么划分Period或Duration或Interval实例没有实现? 例如p = p.divideBy(2);
需要3个班级,因为他们代表了不同的概念,所以这是一个选择适当的工作而不是相对表现的问题。 从我用斜体添加的注释文档中:
在约达时间的时间间隔表示时间从一毫秒时刻到另一时刻的间隔。 这两个时刻都是在日期时间连续体中完全指定的时刻,并且包含时区。 具体时间被定义为例如这可能是昨天的20:00:00GMT和早上的09:00:00GMT之间的时间间隔。
在约达-的持续时间表示以毫秒计的时间的持续时间。 持续时间通常从间隔获得。 即我们可以从一个时间间隔的末尾减去开始时间以得出一个持续时间
在约达-时间段表示在一段时间中的字段来定义,例如,3年5月2天及7小时。 这与持续时间不同,因为它在毫秒方面不准确。 只能通过指定与其相关的时刻(包括时间顺序和时区)才能将时间段解析为精确的毫秒数。 例如考虑一年的时间,如果我们在1月1日加上这个时间,我们将一直到明年1月1日,但时间将取决于干预年份是否为闰年。 同样,如果我们将1个月添加到一个月的第一个月,那么我们将在下个月的第一个月到达,但持续时间(以毫秒为单位)将根据有问题的月份而变化
问题3,是不是真的需要来划分时间的具体方法,因为我们总是可以从持续时间获得的毫秒数为long
(使用getMillis()
把它和建造一个新的持续时间(使用new Duration(long duration)
)。
根据上述时间段的定义,划分一段时间并不具有真正的意义。 例如什么是半个月? (其长度取决于哪个月)。
要添加到mikej的答案:
Joda-Time 持续时间是“物理”时间间隔; 例如:
12000 milliseconds
< - 这是一个持续时间
乔达时间间隔实际上是一对时刻 (开始即时 - 结束时刻)。 瞬间是一个“物理”概念,是时间轴上的一个点。 例如(只是一种可能的符号):
(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:你只能分两个物理时间(一个持续时间)。
链接地址: http://www.djcxy.com/p/36711.html上一篇: Time: what's the difference between Period, Interval and Duration?