Java カレンダー set(int year, int month, int date) が正しい日付を返さないのはなぜですか? [重複] 質問する

Java カレンダー set(int year, int month, int date) が正しい日付を返さないのはなぜですか? [重複] 質問する

ドキュメントによると、calendar set() は次のとおりです。

http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Calendar.html#set%28int,%20int,%20int%29

set(int year, int month, int date) 
Sets the values for the calendar fields YEAR, MONTH, and DAY_OF_MONTH.

コード:

Calendar c1 = GregorianCalendar.getInstance();
c1.set(2000, 1, 30);  //January 30th 2000
Date sDate = c1.getTime();

System.out.println(sDate);

出力:

Wed Mar 01 19:32:21 JST 2000

なぜ1月30日ではないのでしょうか?

ベストアンサー1

月の 1 は 2 月です。2 月 30 日は 3 月 1 日に変更されます。月には 0 を設定する必要があります。最善の方法は、Calendar で定義されている定数を使用することです。

c1.set(2000, Calendar.JANUARY, 30);

おすすめ記事