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

时间:2012-12-31 10:28:22

标签: 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));

前一个月: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

2 个答案:

答案 0 :(得分:6)

月份从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

答案 1 :(得分:2)

您需要以下内容:

c2.set(Calendar.DAY_OF_MONTH, 1)

因为今天的DAY_OF_MONTH(31)恰好是11月份的一天: - )