月末の日付を求める

Dateクラスで来月の1日の前日を求める方法

今月(2009年12月)
groovy:000>  d = new Date(); new Date(d.year,d.month+1,1-1).date
===> 31
来月(2010年1月)
groovy:000>  d = new Date(); new Date(d.year,d.month+2,1-1).date
===> 31
再来月(2010年2月)
groovy:000>  d = new Date(); new Date(d.year,d.month+3,1-1).date
===> 28
月指定(2012年2月)
groovy:000>  d = new Date("2012/2/1"); new Date(d.year,d.month+1,1-1).date
===> 29

CalendarクラスのgetActualMaximumメソッドを使う方法

今月(2009年12月)
Calendar.getInstance().getActualMaximum(Calendar.DATE);
来月(2010年1月)
groovy:000> cal = Calendar.getInstance(); cal.add(Calendar.MONTH,1);cal.getActualMaximum(Calendar.DATE);
===> 31
再来月(2010年2月)
groovy:000> cal = Calendar.getInstance(); cal.add(Calendar.MONTH,2);cal.getActualMaximum(Calendar.DATE);
===> 28
月指定(2012年2月)
groovy:000> cal = Calendar.getInstance(); cal.set(Calendar.YEAR,2012);cal.set(Calendar.MONTH,Calendar.FEBRUARY);cal.getActualMaximum(Calendar.DATE);
===> 29