public static boolean isLeapYear(int year) {
      
      if (year > 1582 && year % 4 == 0 &&
         (year % 100 != 0 || (year % 100 == 0 && year % 400 == 0)))
         return true;
      else
         return false;
   }  
   public static int getMonthDays(int year, int month) {
      int day = 0;
      switch (month) {
         case 1:
         case 3:
         case 5:
         case 7:
         case 8:
         case 10:
         case 12:
            day = 31;
            break;
         case 4:
         case 6:
         case 11:
            day = 30;
            break;
         case 9:
            if (year == 1582)
               day = 20;
            else
               day = 30;
            break;
         case 2:
            if (isLeapYear(year))
               day = 29;
            else
               day = 28;
            break;
         default:
            System.out.println("MyDateTime.getMonthDays: Month(" + month + ") is beyond : 1-12。");
            break;
      }
      return day;
   }//这个是你最终调用的函数
   public static boolean isLastDay(int year, int month,int day)
   {
      int monthday = getMonthDays(year,month);
      if (day > monthday)
      {
          System.out.println(year+"year"+month+"month"+day+"day is error date!!\n");
              return false;
      }
      else if(day < monthday)
           return false;      return true;
   }

解决方案 »

  1.   

    我以前遇到过这样的问题,也找过clander的方法,没有找到。后来自己写了一个程序,很简单的,就是把年月作为参数返回最后一天,里面都是swich case这样的东西,很难看。要是你最后实在没有办法了,就这样吧,hohohooho
        private int getDay(int year,int month){
            int returnInt=31;
            switch(month){
                case 1:
                    returnInt=31;
                    break;
                case 2:
                    if(month==2 &&  year%4==0){
                        returnInt=29;
                    }
                    if(year%100 == 0 && year%400 != 0){
                        returnInt=28;
                    }
                    if(year%100 == 0 && year%400 == 0){
                        returnInt=29;
                    }
                    break;
                case 3:
                    returnInt=31;
                    break;
                case 4:
                    returnInt=30;
                    break;
                case 5:
                    returnInt=31;
                    break;
                case 6:
                    returnInt=30;
                    break;
                case 7:
                    returnInt=31;
                    break;
                case 8:
                    returnInt=31;
                    break;
                case 9:
                    returnInt=30;
                    break;
                case 10:
                    returnInt=31;
                    break;
                case 11:
                    returnInt=30;
                    break;
                case 12:
                    returnInt=31;
                    break;
                default:
                    returnInt=31;
                    break;
                }
            return returnInt;
        }
    大概是这样的,不过我要用的是最后一天,你可以判断一下
      

  2.   

    Calendar now=Calendar.getInstance();
    now.add(Calendar.DATE,-now.get(Calendar.DATE)+1);
    now.add(Calendar.MONTH,1);
    now.add(Calendar.DATE,-1);
      

  3.   

    Calendar now=Calendar.getInstance();
    now.add(Calendar.DATE,-now.get(Calendar.DATE)+1);
    now.add(Calendar.MONTH,1);
    now.add(Calendar.DATE,-1);
      

  4.   

    看来只能用 arke(keke) 或 vivanSun(骆驼)的方法!我也是再找Calendar里
    面是否有,也是没有找到!谢谢两位!
      

  5.   

    也许这个方法更好
    Date todate = new Date();
    Date secdate = new Date(todate.getYear(),todate.getMonth(),todate.getDate()+1);
    if (secdate.getDate()<2)
    {
    System.out.println("today is the last of this month");
    }
    else
    {
    System.out.println("today is not the last of this month");
    }