【问题标题】:why does Joda Time allow a Period constructor to take two LocalTimes but there is no Duration constructor like that?为什么 Joda Time 允许 Period 构造函数采用两个 LocalTimes 但没有像这样的 Duration 构造函数?
【发布时间】:2011-09-05 07:44:26
【问题描述】:

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

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

这是我的想法:持续时间对于不了解社交约定的应用程序很有好处,而缺乏意识是它与 Period 不同的原因。 LocalTime 非常适合在不知道约定的情况下使用,因为它没有时区。这表明 Duration 应与 LocalTime 一起使用,反之亦然。

【问题讨论】:

    标签: java jodatime


    【解决方案1】:

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

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

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

    Period 的定义更广泛,在两个部分定义的时间之间有一段时间是有意义的,例如LocalTimes(在示例中仅为“3 小时”)。 Periods 很容易对应标准时长,因此可以直接调用 period.toStandardDuration()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-10
      相关资源
      最近更新 更多