2012-12-31 16 views
2

我有一個Android onClickListener根據+/-按鈕單擊更改Java.util.Calendar對象的月份。下面是設置日曆的代碼。看來我不能將月份設置爲「10」。這個世界正在發生什麼?無法設置在Java.util.Calendar月

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

爲此,您不妨考慮'roll()'或'add()'日曆方法 – Less

+0

謝謝。我不知道這件事! – wufoo

回答

5

個月從0開始,因此9月和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 
+0

哇,我沒有意識到日曆對象是「聰明」!我敢打賭,我不需要進行範圍檢查我的月份指數;只需讓日曆對象自動滾動到上一年或下一年即可。 – wufoo

2

你需要的東西,如:

c2.set(Calendar.DAY_OF_MONTH, 1) 

今天的DAY_OF_MONTH(31)恰好是一天,是不是在十一月: - )

+0

感謝您的解釋 – wufoo