#Javaで月の最終日を求めたい
Javaで月の最終日を求める必要があったのですが意外とはまったのでメモ。
#java.util.Calenderを利用
日付系ののライブラリを使用することも可能ですが、以下のように、java.util.CalenderクラスのgetActualMaximum()メソッドを用いれば可能です。
test.java
//2019年1月の最終日を求める
int year = 2019;
int month = 1;
Calendar cal = Calendar.getInstance();
cal.clear();//場合によっては必要
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month-1); //月は1月が0
int lastDayOfMonth = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
#注意点1:月を設定する場合のclear()
最初にカレンダーのインスタンスを生成する際に引数なしでgetInstance()すると、現在の日付でインスタンスが作成されます。メソッドを呼び出すのが31日などの場合には、次に30日までしかない月を設定した場合、おかしなことになります。これは、事前にclear()を呼び出すことで回避できます。
#注意点2:月を設定する場合の値
Calrenderクラスでは、Calendar.Monthは月の値から1引いたものが実際の値です。
月をセットする際に、実際の月数より1小さい数をセットする必要があります。