我在向java日历对象添加14天时遇到问题,一直给我2012年2月31日
谁能告诉我下面的代码有什么问题吗?它将14天添加到对象中很好,但是当它将14天添加到2月17日时,应该会得到今年的2012年3月2日,但是我得到的是2012年2月31日。我试着在for循环中增加两周,一天,所有的事情都会回到原来的日期。我花了两天时间搜索谷歌,尽可能多地阅读,但运气不佳。希望这里的人能看到我错过的东西我在向java日历对象添加14天时遇到问题,一直给我2012年2月31日,java,android,Java,Android,谁能告诉我下面的代码有什么问题吗?它将14天添加到对象中很好,但是当它将14天添加到2月17日时,应该会得到今年的2012年3月2日,但是我得到的是2012年2月31日。我试着在for循环中增加两周,一天,所有的事情都会回到原来的日期。我花了两天时间搜索谷歌,尽可能多地阅读,但运气不佳。希望这里的人能看到我错过的东西 while(calNextPaymentDate.before(calEnd)) { Dates.add(date); calNextPaymentDate.add(C
while(calNextPaymentDate.before(calEnd))
{
Dates.add(date);
calNextPaymentDate.add(Calendar.DAY_OF_MONTH, 14);
date = (GregorianCalendar) calNextPaymentDate.clone();
}
calNextPaymentDate
和calEnd
是GregorianCalendar
对象,我已经进行了跟踪,以确保日期被正确填写。它在日期上正确地增加了14天,但正如我所说的,我根本不应该得到2012年2月31日的数据。我的猜测是,实际上你已经将月份设置为2,所以你要看的是3月而不是2月
试着把日期打印出来——我很怀疑它是否会显示2月31日
不要忘记,java.util.Calendar
选择使用0为基础的月份,因此对于2月份,您希望使用1个月。我的猜测是,实际上您已将月份设置为2,因此您选择的是3月份而不是2月份
试着把日期打印出来——我很怀疑它是否会显示2月31日
不要忘记,
java.util.Calendar
选择使用基于0的月份,因此对于2月份,您希望使用第1个月。另一种选择是使用时间而不是日历
另一种选择是使用时间而不是日历
…我认为这可能是“Java的日历坏了,使用JODA”的另一个例子…我认为这可能是“Java的日历坏了,使用JODA”的另一个例子。哦,
Java.util.Calendar
。任何人怎么能容忍使用你呢?使用日历
类中的常量而不是月数:日历。一月
,日历。二月
等等。我想可能也是这样,但当我这样做时:@Jesper当然,但他们头脑正常的人认为把二月一号定为一个好主意吗?我认为这个问题吸引了更多的人。太糟糕了,Java没有修复C在struct tm
中犯的错误。哦,Java.util.Calendar
。任何人怎么能容忍使用你呢?使用日历
类中的常量而不是月数:日历。一月
,日历。二月
等等。我想可能也是这样,但当我这样做时:@Jesper当然,但他们头脑正常的人认为把二月一号定为一个好主意吗?我认为这个问题吸引了更多的人。太糟糕了,Java没有修复C在struct tm
中犯的错误。