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

wuf*_*foo 3 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);
Log.d (TAG, "month now: " + c2.get(Calendar.MONTH));
Run Code Online (Sandbox Code Playgroud)

一个月前:现在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));
Run Code Online (Sandbox Code Playgroud)

一个月前:现在11个月:11

ass*_*ias 7

月份从0开始,因此9月份是10月份,10月份是11月份,11月份没有31天.

如果你添加:

Log.d (TAG, "day of month now: " + c2.get(Calendar.DAY_OF_MONTH));
Run Code Online (Sandbox Code Playgroud)

您将在第二个示例中看到当天已从第31天移至第1天.

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

c2.add(Calendar.MONTH, -1); // or +1
Run Code Online (Sandbox Code Playgroud)