Java 乔达时代:什么';周期、间隔和持续时间之间的区别是什么?

Java 乔达时代:什么';周期、间隔和持续时间之间的区别是什么?,java,jodatime,Java,Jodatime,在2中,三种时间跨度之间的区别是什么: 为什么我们需要三节课 哪一个表现更好 为什么不执行分割时段、持续时间或间隔实例?例如,p=p.divideBy(2) 3个类是必需的,因为它们代表不同的概念,所以问题在于为工作选择合适的类,而不是相对性能。从我用斜体字添加的注释中: Joda Time中的间隔表示从一毫秒到另一毫秒的时间间隔。这两个实例都是datetime连续体中完全指定的实例,包含时区。定义了特定时间,例如,这可能是昨天20:00:00GMT和今天上午09:00:00GMT之

在2中,三种时间跨度之间的区别是什么:

  • 为什么我们需要三节课

  • 哪一个表现更好

  • 为什么不执行分割时段、持续时间或间隔实例?例如,
    p=p.divideBy(2)


3个类是必需的,因为它们代表不同的概念,所以问题在于为工作选择合适的类,而不是相对性能。从我用斜体字添加的注释中:


Joda Time中的间隔表示从一毫秒到另一毫秒的时间间隔。这两个实例都是datetime连续体中完全指定的实例,包含时区。定义了特定时间,例如,这可能是昨天20:00:00GMT和今天上午09:00:00GMT之间的时间间隔

持续时间(单位:Joda Time)表示以毫秒为单位的持续时间。持续时间通常从一个间隔中获得。i、 我们可以从一个区间的末尾减去开始,得出一个持续时间

Joda Time中的期间表示根据字段定义的一段时间,例如,3年5个月2天7小时。这与持续时间不同,因为它以毫秒为单位是不精确的。周期只能通过指定其相对的瞬间(包括时间顺序和时区)解析为精确的毫秒数。例如,考虑1年的时间,如果我们把这个添加到1月1日,我们将永远到达下一个1月1日,但持续时间将取决于干预年是否闰年。同样,如果我们在一个月的第1个月加上1个月,那么我们将到达下个月的第1个月,但是持续时间(以毫秒为单位)将根据所讨论的月份而变化


对于问题3,实际上并不需要一种划分持续时间的特定方法,因为我们总是可以从持续时间中获取毫秒数作为
long
(使用
getMillis()
),将其划分并构造一个新的持续时间(使用
new duration(long duration)

根据上面对句点的定义,划分句点并没有真正的意义。e、 半个月是多少?(其长度取决于哪个月)。

添加到:

持续时间是一个“物理”时间间隔;例如:


12000毫秒
我认为分割一个周期确实有意义——半个月仍然是一个有效的时间单位,但它需要一个开始日期来知道确切的时间长度(与一个月是一个有效周期的方式完全相同)。Jodatime将周期视为整数值字段的元组,它不允许使用小数。这与普通(民用)用途是一致的。在日常生活中,几乎没有人认为“1个月10天”除以2等于“半个月5天”。如果你需要做这个划分,你可能想要一个持续时间(物理时间)。四个月除以二等于两个月。为什么这是无效的?你如何计算“2个月”;18天除以3?你不能对这种手术有一个一致的定义。我认为你可以得到一个一致的定义,但你必须把它看作是“2个月18天”时间的1/3。除非将其转换为间隔,否则无法准确计算出它是什么。仅仅因为JODA不支持它并不意味着它是无效的。@hadley“一天的三分之一”没有一个民事定义。例如,没有合同在三分之一天内有效。@Richard Watson由于DST的原因,一天可以是23、24或25小时。因此,“从…开始的一天的三分之一”是有效的,但只有“三分之一”是无效的。请注意,这个日期时间术语尚未标准化(尚未)。《标准》的a理念是《时代周刊》所认为的a。已经提出了将此类术语标准化的建议,但尚未完成。