gpt4 book ai didi

java - JodaTime:plusMonths(1) 两次不同于 plusMonths(2)

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:34:24 27 4
gpt4 key购买 nike

样本测试

@Test
public void should_be_equals(){
LocalDate now = new LocalDate(2015,01,29);
assertThat(now.plusMonths(1).plusMonths(1)).isEqualTo(now.plusMonths(2));
}

奇怪的结果:

org.junit.ComparisonFailure: 
Expected :2015-03-29
Actual :2015-03-28

为什么不同?

最佳答案

如果您将 2015/01/29 加一个月,您将得到 2015/02/29 - 因为 2015 年不是闰年,所以它不是有效日期,因此 Joda 选择 2015/02/28as documented :

The addition may change the year, but the day-of-month is normally unchanged. If adding months makes the day-of-month invalid, it is adjusted to the last valid day in the month.

再向 2015/02/28 添加一个月将得到实际日期 2015/03/28

添加两个月时不会出现缺少 2 月 29 日的问题,因为 Joda 永远不会得到无效日期。

这同样适用于,例如,new LocalDate(2015, 03, 31).plusMonths(2)new LocalDate(2015, 03, 31).plusMonths(1 ).plusMonths(1) - 我想,这比闰年更常见。

关于java - JodaTime:plusMonths(1) 两次不同于 plusMonths(2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28214473/

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