3
Calendar c = Calendar.getInstance();
c.set(2019, 12, 29);

私がやったとき、私はc.getTime()次の出力を得ました...

出力:

Wed Jan 29 17:15:27 IST 2020 //2019年だったはずです

///// --------------------------------------------- ---------------- //////

Calendar c = Calendar.getInstance();
c.set(2019, 11, 29);

私がやったとき、私はc.getTime()次の出力を得ました...

出力:

Sun Dec 29 17:18:23 IST 2019

今月を12日から11日に変更すると正しい日時が得られた理由がわかりません。誰かがこれを簡単に、可能であれば簡単な小さな例で説明できれば、私は本当に義務付けられます。

4

3 に答える 3

5

a の月Calendarは 0 から始まります

グレゴリオ暦とユリウス暦の年の最初の月は 1 月で、これは 0 です。

グレゴリオ暦11が 12 月であり12、来年の 1 月であると仮定すると、まさにプログラムが表示する方法と同じです。

于 2012-08-26T11:56:44.600 に答える
2

月は 0 から始まります。12 で参照したものは、実際には UNDECIMBER です。したがって、1 月から 12 月の場合は 0 から 11 を使用し、12 は別の月であるため、カレンダーは翌年の 1 月に繰り越されます。

参照: http://docs.oracle.com/javase/1.5.0/docs/api/constant-values.html#java.util.Calendar.UNDECIMBER

于 2012-08-26T11:56:42.347 に答える
1
public final void set(int year,
                      int month,
                      int date)
Sets the values for the calendar fields YEAR, MONTH, and DAY_OF_MONTH. Previous values of other calendar fields are retained. If this is not desired, call clear() first.
Parameters:
year - the value used to set the YEAR calendar field.
month - the value used to set the MONTH calendar field. Month value is 0-based. e.g., 0 for January.
date - the value used to set the DAY_OF_MONTH calendar field.

月の範囲は 0-11 です。12 を使用すると、翌年に移動します。

参照: http://docs.oracle.com/javase/6/docs/api/java/util/Calendar.html#set(int, int, int)

于 2012-08-26T11:56:15.983 に答える