java Calendar.MONTHの罠

javaでCalendarのインスタンスを取得し、月を表示してみたところ、 
なぜか一ヶ月前が表示される。

-------------------サンプルコード-------------------
Calendar cal = Calendar.getInstance(); 
System.out.println(cal.get(Calendar.MONTH)); 
----------------------------------------------------------

8月に実行すると「7」と表示されます。

なんでだーー??と思って調べたところ、Calendarクラスの 
MONTHは0から11までの値を取る為。 
なので、これで月をとりたければ+1しなければ 
ならないのです。

以下、javadocより抜粋 
------------------------------------------------------------------------------------------------------------------ 
get および set のための、月を示すフィールド値です。これはカレンダ固有の値です。 
年の最初の月は JANUARY で 、0 となります。 
最後の月は、1 年の月の数によります。 
------------------------------------------------------------------------------------------------------------------

なるほど。

これで、Calendar#getTime()でDate型に変換したときは現在の月が 
ちゃんと取れるのに…という疑問も無事晴れました。

posted by へっぽ at 07:09 | TrackBack(0) | java | このブログの読者になる | 更新情報をチェックする

この記事へのトラックバック