gpt4 book ai didi

java - Month.AUGUST 中的 dayOfMonth(31)

转载 作者:行者123 更新时间:2023-11-29 03:52:38 25 4
gpt4 key购买 nike

以下代码计算 child 从幼儿园毕业的确切日期。总是在 6 岁生日后的 8 月 31 日。 dob 是 child 的生日:

public static DateMidnight getKigaAustritt(DateMidnight dob){
DateMidnight sechs = dob.plus(Period.years(6));
DateMidnight austritt = new DateMidnight(sechs);
if (sechs.getMonthOfYear() > Month.AUGUST){
austritt = sechs.withYear(sechs.getYear()+1);
austritt = sechs.withMonthOfYear(Month.AUGUST);
austritt = sechs.withDayOfMonth(31);
}else{
austritt = sechs.withMonthOfYear(Month.AUGUST);
austritt = sechs.withDayOfMonth(31);
}
return austritt;
}

现在,如果我就此打住,从其他地方调用该方法,我总是会收到一条错误消息,指出 dayOfMonth() 必须在 [1,30] 范围内。如果我将代码更改为 ..withDayOfMonth(30) 程序运行良好,但 child 提前一天毕业。现在,MonthOfYear 是八月,我想知道为什么会这样。有什么提示吗?

最佳答案

问题是“sechs”的月份没有设置。这是因为您正在调用 sechs.withMonthOfYear 但将其分配给 austrittwithMonthOfYear 返回修改后的副本,它不会修改调用它的元素。请考虑以下事项:

austritt = sechs.withYea(...)
.withMonthOfYear(...)
.withDayOfMonth(...);

根据 API

Returns a copy of this date with the day of month field updated.

DateMidnight is immutable, so there are no set methods. Instead, this method returns a new instance with the value of day of month changed.

关于java - Month.AUGUST 中的 dayOfMonth(31),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7996221/

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