Duration#toDays 和 Duration#toDaysPart 是多余的吗?

Bas*_*que 5 java duration java-8 java-time java-9

在 Java 8 中,Duration该类提供了该toDays方法,将总天数作为与日历天无关的 24 小时时间块的计数返回。

在 Java 9 中,Duration该类获得了方便的to…Part方法:toDaysPart, toHoursPart, toMinutesPart, toSecondsPart, toMillisPart, toNanosPart。我了解小时、分钟等的需要。但我想知道toDaysPart.

我的问题是:

? 是否会Duration#toDays并且Duration#toDaysPart曾经为特定Duration对象返回不同的值?

Mak*_*oto 6

在 Java 11 中,OpenJDK中的这些源代码行完全相同

持续时间#toDays :

public long toDays() {
    return seconds / SECONDS_PER_DAY;
}
Run Code Online (Sandbox Code Playgroud)

持续时间#toDaysPart

public long toDaysPart(){
    return seconds / SECONDS_PER_DAY;
}
Run Code Online (Sandbox Code Playgroud)

从 Java 16 开始,没有说明哪些已弃用或哪些未弃用。所以……睁大你的眼睛吧,这是我在这里能给你的最好的建议。

  • 我怀疑是否需要弃用。我认为“toDaysPart”是故意添加的,只是为了与其他“to…Part”方法保持一致。感谢您找到源代码并编写答案。 (3认同)
  • @WJS 返回“int”与“long”在上下文中是有意义的。小时部分永远不会超过 23,分钟部分永远不会超过 59,依此类推。但天数可能非常大,超出了“int”的限制。例如:`Duration.ofDays( Integer.MAX_VALUE + 1L ).toDaysPart()` = `2147483648`。 (2认同)