为什么Joda Time允许Period构造函数采用两个LocalTimes但是没有像这样的Duration构造函数?

时间:2011-08-13 02:28:57

标签: java jodatime

为什么Joda Time允许Period构造函数采用两个LocalTimes,但是没有像这样的Duration构造函数?

我想知道,因为它可能有助于我理解Joda Time的最佳用途。

这是我的想法:持续时间适用于社交惯例不知情的应用程序,缺乏意识是使它与Period不同的原因。由于没有时区,LocalTime很适合常规用途。这表明持续时间应与LocalTime一起使用,反之亦然。

1 个答案:

答案 0 :(得分:2)

Duration是两个精确Instant时间之间的时间量(完全独立于人类概念,如年,日和秒)。但是,LocalTime代表了不明确的时间点(它们需要一个日期和时区来定义Instant)。

有理由说两个LocalTime之间有一个“标准持续时间”(假设没有DST,没有闰年,没有闰秒(Joda年表不支持)的持续时间) s,但没有足够的信息来计算“真实持续时间”。我怀疑这就是Duration没有那个构造函数的原因。

例如,我们假设我们有两个LocalTimes:一个代表凌晨1:00和凌晨4:00。 99%的情况下,说3个小时的持续时间是有意义的。但是,如果它们代表夏令时转换当天的时间,则持续时间为2小时或4小时。

更广泛地定义了

Period,其中它使感觉具有在两个部分定义的时间之间的时间段,例如LocalTime s(在该示例中仅为“3小时”)。 Period很容易与标准持续时间相对应,因此可以调用period.toStandardDuration()