gpt4 book ai didi

android - dayOfMonth 的值 29 必须在 [1,28] JODA 时间范围内

转载 作者:行者123 更新时间:2023-11-29 21:22:12 24 4
gpt4 key购买 nike

当我使用闰年时,我计算下一个生日剩余天数的代码会出现以下错误,即;当与 29th feb 一起使用时

*错误**dayOfMonth 的值 29 必须在 [1,28] 范围内

请帮我解决这个问题...

public int getDaysRemainingForNextBirthDay(){
Calendar cal=Calendar.getInstance();
int currentYear=cal.get(Calendar.YEAR);
int currentMonth=cal.get(Calendar.MONTH);
int birthYear=currentYear;
int birthMonth=Integer.parseInt(m);
int birthDay=Integer.parseInt(d);
if (birthMonth<currentMonth) {
birthYear=birthYear+1;
}
DateTime birthDate=new DateTime(birthYear,birthMonth,birthDay,0, 0);

DateTime currentDate=DateTime.now();
Period datePeriod=new Period(currentDate,birthDate,PeriodType.days());
PeriodFormatter periodFormatter=new PeriodFormatterBuilder()
.appendDays().appendSuffix("").toFormatter();

return Integer.parseInt(periodFormatter.print(datePeriod));
}

最佳答案

问题在于,在 Java 的 Calendar 中,月份从 0 开始编号,但在 Joda Time 中,它们从 1 开始编号。

因此在您的示例中,您将 2 作为月份传递,根据 Calendar 类,它是 March,但它被解释为 二月 由 Joda 时间框架。

要解决这个问题,只需在将 Calendar 传递给 Joda 时,将您获得的月份加 1。

关于android - dayOfMonth 的值 29 必须在 [1,28] JODA 时间范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20617429/

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