2012-01-21 8 views
0

私は2009年1月23日であることを値を設定していますが、私は月を求める際には、返す「2」ここ は私のコードです:CalendarクラスのJava

Calendar calendar=GregorianCalendar.getInstance(); 
calendar.set(2009,01,23); 
calendar.getTime(); 
System.out.println(calendar.MONTH); 

助けてください!私は最初の出力が2ではなく1になると期待しています!

+3

calender.MONTHが一定 –

+0

ある...と良いIDEがそれを指摘しなければならない... –

+0

質問が既に回答されているので、私はちょうどしようとするあなたを伝えることができますhttp://joda-time.sourceforge.net/ – Gevorg

答えて

6

Calendar.MONTHは一定です。 calendar.get()を使用して、あなたは月のフィールドをしたいことを示すために使われています:

System.out.println(calendar.get(Calendar.MONTH)); 
+1

+1、私はそれを逃しました;-)。 –

4

ヶ月間0ベースのCalendarであり、次のように記述する必要があります。

calendar.set(2009, 0, 23); 

...以上、混乱を避けるために:

calendar.set(2009, Calendar.JANUARY, 23); 
+0

@ do not help!まだ出力は2 – TimeToCodeTheRoad

+0

@TimeToCodeTheRoadです:* JB Nizet *の答えを参照してください。あなたのコードには2つのバグがあります:-) –

1

は、あなたのカレンダーのインスタンスに現在設定されている日付の月を取得

calendar.get(Calendar.MONTH) 

を使用する必要があります。 Calendar.MONTH(インスタンスを介してアクセスしたもの)はget()に月を返すように指示する単なる定数です。詳細については、

参照のJavaDoc:http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Calendar.html