为什么Joda Time允许Period构造函数采用两个LocalTimes,但是没有像这样的Duration构造函数?
我想知道,因为它可能有助于我理解Joda Time的最佳用途。
这是我的想法:持续时间适用于社交惯例不知情的应用程序,缺乏意识是使它与Period不同的原因。由于没有时区,LocalTime很适合常规用途。这表明持续时间应与LocalTime一起使用,反之亦然。
答案 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()
。