不知道Calendar里面是否有一个方法可以完成这个要求。如果哪位高手知道的话,可否告诉一下小弟。先谢了!!!

解决方案 »

  1.   


          Calendar c = Calendar.getInstance();
          //设置为该月,例如08年1月,日期随意
           c.set(2008,0,1);
          //获得该月的日期
           int max = c.getActualMaximum(Calendar.DATE);
           
      

  2.   

    int   maxDay   =   calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
      

  3.   

    SimpleDateFormat 用这个类!用起相当舒服!
    import java.text.SimpleDateFormat;
    import java.util.Date;
    public class Test {


    public static void main(String[] args) {
    Date date=new Date();

    SimpleDateFormat sdf=new SimpleDateFormat ("yyyy年MM月dd天");

    System.out.println(sdf.format(date));
    }
    }
      

  4.   

    斑竹说的应该是得到一年中间一个月天数最多的那个月的天数----31
    好象与LZ的要求不怎么符合...LZ要的是输入月份,得到该月的实际天数.
    问LZ是吧?
      

  5.   

    int maxDay=new GregorianCalendar().getActualMaximum(Calendar.DATE);  
    这就是当前月的最大天数。
      

  6.   

    没错啦,Calendar的getActualMaximum方法。像今年的2月,返回的就是29天
      

  7.   

    getInstance()里面的3个参数最后一位是什么意思呢?
      

  8.   

    /**
     * <p>Title: 时间格式转化与计算</p>
     * <p>Copyright: Copyright (c) 2004</p>
     * <p>Company: www.code-park.com</p>
     * @author 网络信息部 范庆丰
     * @version 1.0
     */package www.fqf.cn.com;import java.util.Calendar;
    import java.util.Date;
    import java.text.*;
    import java.util.GregorianCalendar;public class DateTime {
      public DateTime() {
      }  /**
       * 取得系统当前时间
       * @return String yyyy-mm-dd
       */
      public String getCurrentDate() {
        Calendar rightNow = Calendar.getInstance();
        int year = rightNow.get(rightNow.YEAR);
        int month = rightNow.get(rightNow.MONTH) + 1;
        int day = rightNow.get(rightNow.DATE);
        return year + "-" + month + "-" + day;
      }  /**
       * 取得系统当前时间
       * @return String yyyy年mm月dd日
       */
      public String getCurrentDate1() {
        Calendar rightNow = Calendar.getInstance();
        int year = rightNow.get(rightNow.YEAR);
        int month = rightNow.get(rightNow.MONTH) + 1;
        int day = rightNow.get(rightNow.DATE);
        return year + "年" + month + "月" + day + "日";
      }  /**
       * 取得系统当前时间
       * @return String yyyymmdd
       */
      public String getCurrentDate2() {
        Calendar rightNow = Calendar.getInstance();
        int year = rightNow.get(rightNow.YEAR);
        int month = rightNow.get(rightNow.MONTH) + 1;
        int day = rightNow.get(rightNow.DATE);
        return year + "" + month + "" + day;
      }  /**
       * 取得系统当前时间
       * @return String yyyy-mm
       */
      public String getCurrentDate3() {
        Calendar rightNow = Calendar.getInstance();
        int year = rightNow.get(rightNow.YEAR);
        int month = rightNow.get(rightNow.MONTH) + 1;
        //int day = rightNow.get(rightNow.DATE);
        return year + "-" + month;
      }  /**
       * 取得系统当前时间
       * @return String yyyyMMddhhmmss
       */
      public String getCurrentDate4() {
         Calendar c = Calendar.getInstance();
             c.add(c.SECOND, 0);         return "" + c.get(c.YEAR) + "" + (c.get(c.MONTH) + 1) + "" + c.get(c.DATE)+""+c.get(c.HOUR_OF_DAY)+""+c.get(c.MINUTE)+""+c.get(c.SECOND);}  /**
       * 取得系统当前时间
       * @return String yyyy-MM-dd hh:mm:ss
       */
     /* public String getCurrentDate5() {
        SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        java.util.Date date = new java.util.Date();
        String time = simpleDateFormat.format(date);
        return time;
      }
    */
     /**
     * 取得系统当前时间
     * @return String yyyy-MM-dd hh:mm:ss
     */    public String getCurrentDate5(){
            Calendar c = Calendar.getInstance();
            c.add(c.SECOND, 0);
            return "" + c.get(c.YEAR) + "-" + (c.get(c.MONTH) + 1) + "-" + c.get(c.DATE)+" "+c.get(c.HOUR_OF_DAY)+":"+c.get(c.MINUTE)+":"+c.get(c.SECOND);
          }      /**
           * 取得系统当前时间 常用于订单号
           * @return String yyyyMMddhhmmss
           */
          public String getCurrentDate6() {
             Calendar c = Calendar.getInstance();
                 c.add(c.SECOND, 0);
                 String year=c.get(c.YEAR)+"";
                 return "" + year.subSequence(2,year.length())+ "" + (c.get(c.MONTH) + 1) + "" + c.get(c.DATE)+"-"+c.get(c.HOUR_OF_DAY)+""+c.get(c.MINUTE)+""+c.get(c.SECOND)+"-"+c.get(c.MILLISECOND);    } //YYYYMMDD
         public String getCurrentDate7() {
              Calendar c = Calendar.getInstance();
                  c.add(c.SECOND, 0);
                  String year=c.get(c.YEAR)+"";
                  int month=c.get(c.MONTH) + 1;
                  String strmonth=month+"";
                  if(month<10){
                     strmonth="0"+month;
                  }
                  int day=c.get(c.DATE);
                  String strday=day+"";
                  if(day<10){
                     strday="0"+day;
                  }
                  return "" + year+ "" + strmonth + "" + strday;     }
         //hhmmsswww
         public String getCurrentDate8() {
              Calendar c = Calendar.getInstance();
                  c.add(c.SECOND, 0);
                  int hh=c.get(c.HOUR_OF_DAY);
                  String strhh=hh+"";
                  if(hh<10){
                     strhh="0"+hh;
                  }
                  int mm=c.get(c.MINUTE);
                  String strmm=mm+"";
                  if(mm<10){
                     strmm="0"+mm;
                  }
                  int ss=c.get(c.SECOND);
                  String strss=ss+"";
                  if(ss<10){
                     strss="0"+ss;
                  }
                  int www=c.get(c.MILLISECOND);
                  String strwww=www+"";
                  if(www<10){
                     strwww="00"+www;
                  }if(9<www&&www<100){
                     strwww="0"+www;
                  }              return strhh+""+strmm+""+strss+""+strwww;     }  /**
       * 取得系统当前时间前n个月的相对应的一天
       * @param n int
       * @return String yyyy-mm-dd
       */
      public String getNMonthBeforeCurrentDay(int n) {
        Calendar c = Calendar.getInstance();
        c.add(c.MONTH, -n);
        return "" + c.get(c.YEAR) + "-" + (c.get(c.MONTH) + 1) + "-" + c.get(c.DATE);  }  /**
       * 取得系统当前时间后n个月的相对应的一天
       * @param n int
       * @return String  yyyy-mm-dd
       */
      public String getNMonthAfterCurrentDay(int n) {
        Calendar c = Calendar.getInstance();
        c.add(c.MONTH, n);
        return "" + c.get(c.YEAR) + "-" + (c.get(c.MONTH) + 1) + "-" + c.get(c.DATE);  }  /**
       * 取得系统当前时间前n天
       * @param n int
       * @return String yyyy-mm-dd
       */
      public String getNDayBeforeCurrentDate(int n) {
        Calendar c = Calendar.getInstance();
        c.add(c.DAY_OF_MONTH, -n);
        return "" + c.get(c.YEAR) + "-" + (c.get(c.MONTH) + 1) + "-" + c.get(c.DATE);
      }  /**
       * 取得系统当前时间后n天
       * @param n int
       * @return String yyyy-mm-dd
       */
      public String getNDayAfterCurrentDate(int n) {
        Calendar c = Calendar.getInstance();
        c.add(c.DAY_OF_MONTH, n);
        return "" + c.get(c.YEAR) + "-" + (c.get(c.MONTH) + 1) + "-" + c.get(c.DATE);
      }
      public String getNDayAfterCurrentDate1(int n) {
        Calendar c = Calendar.getInstance();
        c.add(c.DAY_OF_MONTH, n);
        return "" + c.get(c.YEAR) + "-" + (c.get(c.MONTH) + 1) + "-" + c.get(c.DATE)+" "+c.get(c.HOUR_OF_DAY)+":"+c.get(c.MINUTE)+":"+c.get(c.SECOND);
      }
      //---------------------------------------------------------------------
      //取过去一个时间对应的系统当年的一天
      public String getCurrentDateAfterPastDate(String sPastDate) {
        if (sPastDate != null && !sPastDate.equals("")) {
          Date date = switchStringToDate(sPastDate);
          Calendar c = Calendar.getInstance();
          c.setTime(date);
          int iPastYear = c.get(c.YEAR);
          Calendar c1 = Calendar.getInstance();
          int iCurrentYear = c1.get(c1.YEAR);
          c.add(c.YEAR, iCurrentYear - iPastYear);
          return "" + c.get(c.YEAR) + "-" + (c.get(c.MONTH) + 1) + "-" +
              c.get(c.DATE);
        }
        else {
          return null;
        }
      }  /**
       * 将一个日期字符串转化成日期
       * @param sDate String
       * @return Date yyyy-mm-dd
       */
      public Date switchStringToDate(String sDate) {
        Date date = null;
        try {
          SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
          date = df.parse(sDate);    }
        catch (Exception e) {
          System.out.println("日期转换失败:" + e.getMessage());
        }
        return date;
      }  /**
       * 输入两个字符串型的日期,比较两者的大小
       * @param fromDate String
       * @param toDate String
       * @return boolean before为true
       */
      public boolean compareTwoDateBigOrSmall(String fromDate, String toDate) {
        Date dateFrom = this.switchStringToDate(fromDate);
        Date dateTo = this.switchStringToDate(toDate);
        if (dateFrom.before(dateTo)) {
          return true;
        }
        else {
          return false;
        }
      }  
      

  9.   

    /**
       * 将一个日期字符串转化成Calendar
       * @param sDate String
       * @return Calendar
       */
      public Calendar switchStringToCalendar(String sDate) {
        Date date = switchStringToDate(sDate);
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        return c;
      }  /**
       * 将一个日期转化成Calendar
       * @param date Date
       * @return Calendar
       */
      public Calendar switchStringToCalendar(Date date) {
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        return c;
      }  public  String string2Date(String dateString)
      throws java.lang.Exception {
        /*DateFormat dateFormat;
        dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");
        dateFormat.setLenient(false);
        java.util.Date timeDate = dateFormat.parse(dateString);//util类型
        //java.sql.Date dateTime = new java.sql.Date(timeDate.getTime());//sql类型
        java.sql.Timestamp dateTime = new java.sql.Timestamp(timeDate.getTime());//Timestamp类型
        */
        SimpleDateFormat newk = new SimpleDateFormat ("yyyy.MM.dd hh:mm:ss");
       SimpleDateFormat old = new SimpleDateFormat("MMM dd hh:mm:ss yyyy");   String strDate = "Mar 22 00:42:00 2002";
       Date d = old.parse(strDate);
       System.out.println(newk.format(d));    return newk.format(d);
      }  /**
       * 取得某个时间前n个月的相对应的一天
       * @param sDate String
       * @param n int
       * @return String yyyy-mm-dd
       */
      public String getNMonthBeforeOneDay(String sDate, int n) {
        Calendar c = switchStringToCalendar(sDate);
        c.add(c.MONTH, -n);
        return "" + c.get(c.YEAR) + "-" + (c.get(c.MONTH) + 1) + "-" + c.get(c.DATE);  }  //取得某个时间后n个月的相对应的一天
      public String getNMonthAfterOneDay(String sDate, int n) {
        Calendar c = switchStringToCalendar(sDate);
        c.add(c.MONTH, n);
        return "" + c.get(c.YEAR) + "-" + (c.get(c.MONTH) + 1) + "-" + c.get(c.DATE);  }  //取得某个时间前n天,格式为yyyy-mm-dd
      public String getNDayBeforeOneDate(String sDate, int n) {
        Calendar c = switchStringToCalendar(sDate);
        c.add(c.DAY_OF_MONTH, -n);
        return "" + c.get(c.YEAR) + "-" + (c.get(c.MONTH) + 1) + "-" + c.get(c.DATE);
      }  //取得某个时间后n天,格式为yyyy-mm-dd
      public String getNDayAfterOneDate(String sDate, int n) {
        Calendar c = switchStringToCalendar(sDate);
        c.add(c.DAY_OF_MONTH, n);
        return "" + c.get(c.YEAR) + "-" + (c.get(c.MONTH) + 1) + "-" + c.get(c.DATE);
      }  //判断系统当前时间是不是润年
      public boolean isRunNian() {
        java.util.Calendar rightNow = java.util.Calendar.getInstance();
        int year = rightNow.get(rightNow.YEAR);
        if (0 == year % 4 && (year % 100 != 0 || year % 400 == 0)) {
          return true;
        }
        else {
          return false;
        }  }
      //
      public int getWeek(String date){
         String[] a=date.split("-");
         int year=Integer.parseInt(a[0]);
         int month=Integer.parseInt(a[1])-1;
         int day=Integer.parseInt(a[2]);
         GregorianCalendar   d=new   GregorianCalendar();
         d.set(year,month,day);
         int   weekday=d.get(Calendar.DAY_OF_WEEK);
         //System.out.println(weekday-1);
         return weekday-1;
      }
      public String[] getWeekdays(String date){
         int atweek= getWeek(date);
         //System.out.println(getNDayBeforeCurrentDate(atweek));
         String[] days=new String[7];
         for(int i=0;i<7;i++){
             days[i]=getNDayAfterOneDate(getNDayBeforeOneDate(date,atweek-1),i);
         }
    //     for(int i=0;i<7;i++){
    //         System.out.println("==="+days[i]);
    //     }
         return days;
      }
      public static void main(String args[]) {
        DateTime a = new DateTime();
        try{
            a.getWeekdays("2008-12-30");
          System.out.println(a.getNDayAfterCurrentDate(1));
          System.out.println(a.getNDayAfterCurrentDate(0));
          System.out.println(a.compareTwoDateBigOrSmall("2005-12-27 11:01:45.0","2005-12-10 13:16:58.0"));
        }catch(Exception e){System.err.println();}  }
    }