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));

2 番目の例では、1 日が 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 に答える