我在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 :(得分: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月份的一天: - )