Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我在向java日历对象添加14天时遇到问题,一直给我2012年2月31日_Java_Android - Fatal编程技术网

我在向java日历对象添加14天时遇到问题,一直给我2012年2月31日

我在向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

谁能告诉我下面的代码有什么问题吗?它将14天添加到对象中很好,但是当它将14天添加到2月17日时,应该会得到今年的2012年3月2日,但是我得到的是2012年2月31日。我试着在for循环中增加两周,一天,所有的事情都会回到原来的日期。我花了两天时间搜索谷歌,尽可能多地阅读,但运气不佳。希望这里的人能看到我错过的东西

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
中犯的错误。