日期:2014-05-20  浏览次数:20708 次

请问为什么getActualMaximum不对?
请问为什么getActualMaximum不对?

public static void main ( String args[] )
  {
System.out.println(GetDayCountFromYearMonth(2007,2));
}

static int GetDayCountFromYearMonth(int nYear, int nMonth)
{
Calendar c= Calendar.getInstance();
c.set(Calendar.YEAR, nYear);
c.set(Calendar.MONTH, nMonth -1);

return c.getActualMaximum(Calendar.DAY_OF_MONTH);
}


想用GetDayCountFromYearMonth得到指定月分的最大天数,但是2007年 2月好像总是31天?


------解决方案--------------------
Calendar c= Calendar.getInstance(); 
c.set(Calendar.YEAR, nYear); 
c.set(Calendar.MONTH, nMonth -1); 
//这个时候由于2月没有30日,而今天是30日,所以c已经自动跳转到了3月了,所以你要在set Month之前调用一次c.set(Calendar.DATE, 1);才可以保证不出现这个问题
return c.getActualMaximum(Calendar.DAY_OF_MONTH);
------解决方案--------------------
哈哈,测试平年2月的天数不能在 29、30、31 这几天测试,真不巧啊,不过也好发现问题了。