-2

重複の可能性:
カレンダーが間違った月を返す

次のコードを記述したアプリケーションの日付と時刻を取得したい

Calendar c = Calendar.getInstance();
System.err.println("Date is: " + c.get(Calendar.DATE));
System.err.println("Month is: " + c.get(Calendar.MONTH));
System.err.println("Year is: " + c.get(Calendar.YEAR));
System.err.println("Hour is: " + c.get(Calendar.HOUR_OF_DAY));

ただし、上記のコードスニペットは誤った結果を提供しています。

SEVERE: Date is: 31
SEVERE: Month is: 11
SEVERE: Year is: 2012
SEVERE: Hour is: 17 

注:私のマシンの時間は完璧です、そこに問題はありません

4

3 に答える 3

0

Monthゼロインデックスです。つまり、1112月を意味します。

于 2012-12-31T11:41:09.313 に答える
0

取得している出力は正しいです。

なぜ月が12ではなく11になるのか、混乱していると思いますよね?それが問題である場合は、気にしないでください。月は0に基づいているため0、、、Januaryなど1ですFeb

したがって、平均としての出力11はですDecember

Read Docs

月として文言を使用して適切な月が必要な場合は、以下を使用してください。

Calendar rightNow = Calendar.getInstance();
java.text.SimpleDateFormat df1 = new java.text.SimpleDateFormat("MM");
java.text.SimpleDateFormat df2 = new java.text.SimpleDateFormat("MMM");
java.text.SimpleDateFormat df3 = new java.text.SimpleDateFormat("MMMM");
System.out.println(df1.format(rightNow.getTime()));
System.out.println(df2.format(rightNow.getTime()));
System.out.println(df3.format(rightNow.getTime()));

それは与えるでしょう

12
Dec
December

デモ

注:デモでは、このサイトのサーバーは2013年がすでに始まっている場所にあるため、2013年1月が表示されます。World Time

于 2012-12-31T11:41:13.687 に答える
0

その月の11ではなく12を期待しています。

c.get(Calendar.MONTH)0ベースのインデックスを返します。

からjavadoc

public static final int MONTH

月を示すgetおよびsetのフィールド番号。これはカレンダー固有の値です。グレゴリオ暦とユリウス暦の年の最初の月は1月で、これは0です。最後は、1年の月数によって異なります。

于 2012-12-31T11:44:02.183 に答える