小编典典

Joda-Time:Period、Interval 和 Duration 有什么区别?

all

Joda-Time 2 中,三种时间跨度有什么区别:

  • 时期
  • 间隔
  • 期间

    1. 为什么我们需要三个类?

    2. 哪一个表现更好?

    3. 为什么没有实现 划分 Period 或 Duration 或 Interval 实例?例如p = p.divideBy(2);


阅读 174

收藏
2022-07-07

共1个答案

小编典典

需要 3 个类,因为它们代表不同的概念,因此选择适合工作的类而不是相对性能的问题。从带有我以 斜体
添加的注释的文档中: __


Joda-Time 中的 间隔 表示从一个毫秒瞬间到另一个瞬间的时间间隔。这两个瞬间都是日期时间连续体中完全指定的瞬间,并带有时区。
定义了特定时间,例如这可能是昨天 20:00:00GMT 和今天早上 09:00:00GMT 之间的时间间隔。

Joda-Time 中的持续时间表示以毫秒为单位测量的持续时间 持续时间通常是从一个间隔中获得的。
即我们可以从间隔的结尾减去开始以得出持续时间

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


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

根据上述期间的定义,划分期间并没有真正的意义。例如什么是半个月?(它的长度取决于哪个月)。

2022-07-07