【问题标题】:Why isn't there a Duration.ofWeeks()?为什么没有 Duration.ofWeeks()?
【发布时间】:2016-04-29 10:06:33
【问题描述】:

根据this answer,没有Duration.ofMonths()

因为一个月的长度不同。

但是为什么没有Duration.ofWeeks()?一周的长度没有变化,至少不超过一天的长度变化。我们确实有一个Duration.ofDays()

那么,这样做有充分的理由吗?

【问题讨论】:

  • 也许除以7 被认为是调用者可以做的事情。
  • 一周的长度确实不同。基本上,您只能将Duration 用于固定长度,例如秒或小时。一天有效,因为它估计是 24 小时(尽管它没有严格的固定长度)。我认为合同稍微放松了一点。恐怕这会使问题基于意见。
  • @PeterLawrey 然后拥有ofNanos()ofMillis()ofSeconds()ofMinutes()ofHours() 似乎是多余的。
  • 所以问题应该是“为什么会有ofDays?”

标签: java datetime java-8 java-time


【解决方案1】:

在所有 API 中,都必须在某处画一条线。允许Duration 指代天数严格来说是可疑的,因为天数的长度会有所不同。然而,许多应用程序有意识地决定参考 24 小时制,因此 API 方法是合理的。

相比之下,将周视为 (24 * 7) 小时的人数非常少。一周建模的正确方法是非常肯定地使用Period。因此,虽然可以将方法添加到 Duration,但它可能会导致更多错误而不是幸福。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 2015-06-20
    • 2010-12-10
    • 2014-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多