Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.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.util.Calendar中设置月份_Java_Android_Calendar - Fatal编程技术网

无法在Java.util.Calendar中设置月份

无法在Java.util.Calendar中设置月份,java,android,calendar,Java,Android,Calendar,我在Android中有一个onClickListener,它根据单击的+/-按钮更改Java.util.Calendar对象的月份。下面是设置日历的代码。似乎我无法将月份设置为“10”。这到底是怎么回事 Calendar c2 = Calendar.getInstance(); int newmonth = 9; Log.d (TAG, "month before: "+ c2.get (Calendar.MONTH)); c2.set (Calendar.MONTH, newmonth); L

我在Android中有一个onClickListener,它根据单击的+/-按钮更改Java.util.Calendar对象的月份。下面是设置日历的代码。似乎我无法将月份设置为“10”。这到底是怎么回事

Calendar c2 = Calendar.getInstance();
int newmonth = 9;
Log.d (TAG, "month before: "+ c2.get (Calendar.MONTH));
c2.set (Calendar.MONTH, newmonth);
Log.d (TAG, "month now: " + c2.get(Calendar.MONTH));
前一个月:11 现在月份:9

Calendar c2 = Calendar.getInstance();
int newmonth = 10;
Log.d (TAG, "month before: "+ c2.get (Calendar.MONTH));
c2.set (Calendar.MONTH, newmonth);
Log.d (TAG, "month now: " + c2.get(Calendar.MONTH));
前一个月:11
现在的月份:11个月从0开始,所以9是10月,10是11月,11月没有31天

如果您添加:

Log.d (TAG, "day of month now: " + c2.get(Calendar.DAY_OF_MONTH));
您将在第二个示例中看到,日期从31日移到了1日

要获得所需的行为,应使用:

c2.add(Calendar.MONTH, -1); // or +1

你需要像这样的东西:

c2.set(Calendar.DAY_OF_MONTH, 1)

< P> >今天的月份(31)恰好是不是十一月的一天:(-)

你不妨考虑<代码>卷()/代码>或<代码> Ad()和/Calp>日历方法。我不知道这件事!谢谢你的解释哇,我不知道日历对象有那么“聪明”!我打赌我也不需要检查我的月指数;只需让日历对象自动滚动到上一年或下一年。