计算一个月中有多少天,给他一个值(年和月),然后计算得到这个月中有多少天,这个怎么来做,谢谢你们了,如果是闰年的话这个要加上判断,谢谢!

解决方案 »

  1.   

    java.lang.Calendar可以直接判断的啊
      

  2.   

    /**
         * 取得指定月份的最后一天
         *
         * @param strdate String
         * @return String
         */
        public String getMonthEnd(String strdate)
        {
            java.util.Date date = parseFormatDate(getMonthBegin(strdate));
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.add(Calendar.MONTH,1);
            calendar.add(Calendar.DAY_OF_YEAR, -1);
            return formatDate(calendar.getTime());
        }
      

  3.   

    int calculateDays(int y,int m)
      {
        if(m==2)return (y%400==0||(y%4==0&&y%100!=0))?28:29;
        return new int[]{0,31,28,31,30,31,30,31,31,30,31,30,31}[m];
      }
      

  4.   

    int daysOfMonth(int year, int month/*1-12*/) {
        int days[] = {31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        if( 2 == month && 0 == (year % 4) && ( 0 != (year % 100) || 0 == (year % 400) ) ) {//判断闰年,当 month = 2 时才判断,以减少计算量
            days[2] = 29;
        }
        return( days[month] );
    }其实就是判断闰年问题
    1、能被 4 整除,但
    2、不能被 100 整除,除非
    3、能被 400 整除
      

  5.   

    上面那个有问题,这个        Date d = new Date();
            Calendar c = Calendar.getInstance();
            c.setTime(d);
            c.add(c.MONTH,1);
            c.set(c.DATE,1);
            c.add(c.DATE,-1);
            d = c.getTime();
            System.out.println(d.getDate());
      

  6.   

    另一解:
      public static int getDaysInMonth(int year, int mon) {
        java.util.GregorianCalendar d1 = new java.util.GregorianCalendar(year,mon-1,1);
        java.util.GregorianCalendar d2 = (java.util.GregorianCalendar)d1.clone();
        d2.add(Calendar.MONTH,1);
        return (int) ((d2.getTimeInMillis()-d1.getTimeInMillis())/3600/1000/24);
      }
      

  7.   

    一个函数就可以了,还搞这么复杂!
    Calendar cal = Calendar.getInstance();
    int date = cal.getActualMaximum(Calendar.DATE);轻松简单,根本不必要什么下个月之类的
      

  8.   

    import java.util.Calendar;public class Test {
    public static int getDaysInMonth(int year, int mon) {
    java.util.GregorianCalendar date = new java.util.GregorianCalendar(year,mon,1);
    date.add(Calendar.DATE, -1);
    return (date.get(Calendar.DAY_OF_MONTH));
    }
        public static void main(String[] args) {
         System.out.println(getDaysInMonth(2005, 01));
         System.out.println(getDaysInMonth(2005, 02));
         System.out.println(getDaysInMonth(2004, 02));
        }
    }
      

  9.   

    ChDw的方法也不错:

    public static int getDaysInMonth(int year, int mon) {
    java.util.GregorianCalendar date = new java.util.GregorianCalendar(year,mon-1,1);
    return (date.getActualMaximum(Calendar.DATE));
    }
      

  10.   

    JAVA 推出新版本的时候,经常要将旧版本中的某些所谓过时了的类,或者某些类中的某些方法废弃掉,所以,偶的观点,如果代码不是很难,不是非得依赖其他现有的类,那么最好还是自己写,以免将来升级时带来不必要的麻烦。
      

  11.   

    public static int getDaysInMonth( int year, int mon ) {
            GregorianCalendar d1 = new GregorianCalendar( year, mon - 1, 1 );
            GregorianCalendar d2 = ( GregorianCalendar )d1.clone();
            d2.add(Calendar.MONTH,1);
            return (int) ((d2.getTimeInMillis()-d1.getTimeInMillis())/3600/1000/24);
        }如果是闰年的话,返回的值不对.