gpt4 book ai didi

java - 在 java.time.Period 类中,withDays()、withMonths()、withYears() 的作用是什么

转载 作者:IT老高 更新时间:2023-10-28 20:52:34 25 4
gpt4 key购买 nike

我注意到 java.time.Period 类包含一些实例方法,它们的行为与可用的静态工厂方法相同。

  • .withDays() 的行为与 Period.ofDays()
  • 相同
  • .withMonths() 的行为与 Period.ofMonths()
  • 相同
  • .withYears() 的行为与 Period.ofYears()
  • 相同

这些实例方法令人困惑,因为它们创建了一个新的 Period 并返回它们,但没有考虑它们被调用的 Period 的状态。

Period p = Period.ofWeeks(3);
p = p.withDays(2);

这似乎合乎逻辑,这将返回 3 周 2 天的周期,但它只返回 2 天的周期。这就像我调用 Period.ofDays(2) 一样。

此外,还有其他五个静态工厂方法没有类似的实例方法。

那么,这三个实例方法存在的原因是什么?如果是这样,用例是什么?

最佳答案

你做了一个不幸的选择来测试,基本上 - “周”不是一个独立的单位;这只是 7 天的简写。来自 ofWeeks 的文档:

The resulting period will be day-based, with the amount of days equal to the number of weeks multiplied by 7. The years and months units will be zero.

当您随后调用 withDays 时,这实际上是“覆盖”了结果中的天数,从 21 天变为 2 天。

所以试试这个吧:

Period p = Period.ofMonths(3);
p = p.withDays(2);

现在是 3 个月零 2 天。

关于java - 在 java.time.Period 类中,withDays()、withMonths()、withYears() 的作用是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44155210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com