5

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

4

2 回答 2

8

月份从 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
于 2012-12-31T10:29:54.737 回答
3

你需要类似的东西:

c2.set(Calendar.DAY_OF_MONTH, 1)

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

于 2012-12-31T10:33:26.170 回答