private int MonthDays[][] =
{
{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}};//是否润年
private boolean IsLeapYear(int Year)
{
  return ((Year % 4 == 0) && ((Year % 100 != 0) || (Year % 400 == 0)));
}//取得某年月天数
private int DaysInAMonth(int Year, int Month)
{
if (IsLeapYear(Year) && (Month == 2))
{
return MonthDays[1][Month - 1];
} else
{
return MonthDays[0][Month - 1];
}
}int Days = DaysInAMonth(Year, Month);

解决方案 »

  1.   

    不用算,规定一下就可以了!
    如:
    switch(i)
    {
      case 1:31;break;
      case 2:29;break;
      ....
    }
      

  2.   

    楼上那样算肯定不行的,2月有28天有29天
    java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM");
            try {
                System.out.println(getDaysInMonth(sdf.parse("2004-02")));
            }
            catch (Exception e) {}    /** 给个日期计算对应月份的天数 */
        public static int getDaysInMonth(Date date) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            return cal.getActualMaximum(Calendar.DATE);
        }
      

  3.   

    2004/06    GregorianCalendar date = new GregorianCalendar(2004,5,1);
        System.out.println(date.getActualMaximum( date.DAY_OF_MONTH )); 
    月份从0开始
      

  4.   

    注意看javadocjava.util 
    Class Calendar int getActualMaximum(int field) 
              Return the maximum value that this field could have, given the current date. 举个例子,当前月的最大日期 Calendar calendar = Calendar.getInstance(); System.out.println(calendar.getActualMaximum(Calendar.DATE));
      

  5.   

    class DayCounter {
        public static void main(String[] arguments) {
            int yearIn = 2002;
            int monthIn = 12;
            if (arguments.length > 0)
                monthIn = Integer.parseInt(arguments[0]);
            if (arguments.length > 1)
                yearIn = Integer.parseInt(arguments[1]);
            System.out.println(monthIn + "/" + yearIn + " has "
                + countDays(monthIn, yearIn) + " days.");
        }    static int countDays(int month, int year) {
            int count = -1;
            switch (month) {
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                case 12:
                    count = 31;
                    break;
                case 4:
                case 6:
                case 9: 
                case 11:
                    count = 30;
                    break;
                case 2:
                    if (year % 4 == 0)
                        count = 29;
                    else
                        count = 28;
                    if ((year % 100 == 0) & (year % 400 != 0))
                        count = 28;
            }
            return count;
        }
    }
      

  6.   

    用JSP 4行就解决了
    maxDays 为返回的天数Calendar cal = Calendar.getInstance();
     cal.clear();
     cal.set(intyear1,intmonth1-1,1);
     int maxDays = cal.getActualMaximum(cal.DAY_OF_MONTH);
      

  7.   

    搞笑来 原来很多人不知道有Calendar这个类的。