やりたかったこと
JavaのCalendarクラスを使って月末日を取得する際2月31日を入力されたら28日に自動変換するプログラムを組んだ。が、2月を指定しているのに31日が出力されていました。
Calendar cal = Calendar.getInstance();
cal.clear();
cal.set(Calendar.YEAR,2019);
cal.set(Calendar.MONTH,2);
cal.getActualMaximum(Calendar.DATE);//結果は31
原因
原因はCalendarクラスは0を1月として扱う為2を指定した場合3月として扱われていたのが原因でした。
Calendar cal = Calendar.getInstance();
cal.clear();
cal.set(Calendar.YEAR,2019);
cal.set(Calendar.MONTH,1);//2月
cal.getActualMaximum(Calendar.DATE)//結果は28
なぜ1を1月として扱わないのでしょう…同じ目に合ってる方の為にメモしておきました