谁能告诉我下面的代码怎么了?它将14天添加到对象中很好,但是当它将14天添加到2月17日时,它应该在2012年3月2日发布,但是我却要到2012年2月31日。我尝试添加2周,单天在for循环中,所有内容都恢复到同一日期。我已经花了两天时间在Google上搜索和阅读,但没有运气。希望有人可以看到我所缺少的东西。

while(calNextPaymentDate.before(calEnd))
{
   Dates.add(date);
   calNextPaymentDate.add(Calendar.DAY_OF_MONTH, 14);
   date = (GregorianCalendar) calNextPaymentDate.clone();
}


calNextPaymentDatecalEndGregorianCalendar对象,我已经进行了跟踪以确保可以正确地填写日期。该日期已正确添加了14天,但正如我所说,我根本不会获得2012年2月31日的数据。

最佳答案

我的猜测是实际上您将月份设置为2,因此您正在查看的是3月而不是2月。

尝试打印日期-我非常怀疑它将显示2月31日。

不要忘记java.util.Calendar选择使用从0开始的月份,因此对于2月,您需要使用月份1。

08-18 02:42