gpt4 book ai didi

java - 使用 JodaTime 添加月份?

转载 作者:行者123 更新时间:2023-12-01 16:37:43 24 4
gpt4 key购买 nike

我正在尝试使用 JodaTime 添加月份。我有几个月的付款计划,例如:一个月、两个月、三个月和六个月。

当我在 DateTime 添加六个月时不起作用并返回异常。

我正在尝试这个。

/** cria data vencimento matricula */    
public void getDataVencimento(Integer dia, Integer planoPagamento){
//monta data para JodaTime
DateTime data = new DateTime();
Integer ano = data.getYear();
Integer mes = data.getMonthOfYear() + 6; //here 6 month

//monta a data usando JodaTime
DateTime dt = new DateTime(ano, mes, dia, 0, 0);
//convert o datetime para date
Date dtVencimento = dt.toDate();
System.out.println(df.format(dtVencimento));
//retorna a proxima data vencimento
// return dtVencimento;
}

/** exception */
Exception in thread "AWT-EventQueue-0" org.joda.time.IllegalFieldValueException: Value 14 for monthOfYear must be in the range [1,12]


/** I did this and now works */
/** cria data vencimento */
public Date getDataVencimento(Integer dia, Integer planoPagamento){
//monta data para JodaTime
DateTime data = DateTime.now();//pega data de hoje
DateTime d = data.plusMonths(planoPagamento);//adiciona plano de pagamento

//cria data de vencimento
DateTime vencimento = new DateTime(d.getYear(), d.getMonthOfYear(), dia, 0, 0);
//convert o datetime para date
Date dtVencimento = vencimento.toDate();
//retorna a proxima data vencimento
return dtVencimento;
}

如何解决这个问题?

最佳答案

问题是,您将月份值传递给 DateTime 构造函数,该值不在范围内。如果溢出到下一个更高的字段,构造函数不会滚动值。如果任何字段超出范围,它会抛出异常,这里月份是 14 ,这肯定超出了范围 [1, 12]

您可以简单地使用 DateTime 类中的 plusMonths() 方法来添加月份,而不是使用当前的方法:

DateTime now = DateTime.now();
DateTime sixMonthsLater = now.plusMonths(6);

如果月份值溢出,这将自动滚动。

关于java - 使用 JodaTime 添加月份?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25300140/

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