是xx年xx月的天数吗?除了二月,每个月的天数不是固定的吗?

解决方案 »

  1.   

    Calendar test = Calendar.getInstance();
    test.set(Calendar.YEAR, 2003);
    test.set(Calendar.MONTH, 8);
    int totalDay = test.getActualMaximum(Calendar.DAY_OF_MONTH);
      

  2.   

    Calendar test = Calendar.getInstance();
    test.set(Calendar.YEAR, 2003);
    test.set(Calendar.MONTH, 8);
    test.set(DAY_OF_MONTH, 21);
    int weekday= test.get(DAY_OF_WEEK );
      

  3.   

    不是我小看你,你既然问了这个问题,就说明你对java.util.Calendar 类不熟悉,所以请查java.util.Calendar 的api,好好看看。附:源代码(仅供参考)package com.newman.util.calendar;import java.util.*;
    import javax.swing.*;
    import com.newman.io.Debug;
    import com.newman.lang.MyString;
    import com.newman.lang.StringToken;/**
     * <p>Title: newman的类库</p>
     * <p>Description: 没有最好只有更好</p>
     * <p>Copyright: Copyright (c) 2002</p>
     * <p>Company: shu</p>
     * @author [email protected]
     * @version 1.0
     */ /**
      * 该类主要用于时间处理
      *
      * 功能:
      * 日期创建,日期的获得,两个日期的比较,日期加减(加天,加年,加月,加时,加分,加秒),
      * 日期格式(归整2002/07/08),日期转换(toString,toCalendar),
      *
      * 时间创建,获取秒数,获取分钟数,两个时间的比较,时间加减(加天,加时,加分,加秒),
      * 时间格式(归整2002/07/08),时间转换(toString,toCalendar),
      *
      */  /**
       * 注意:月是0-11
       *
       */
    public class NewmanCalendar {
          private int m_Year;
          private int m_Month;//用于显示(从零开始)(0-11)
          private int m_Date;
          private int m_Hour;
          private int m_Minute;
          private int m_Second;
          //---------------------
          private Calendar m_CurrentDate;
          private NewmanCalendar m_NewmanCalendar;
          //---------------------
          final public static int YEAR=1;//测试得到,没有其它意思.
          final public static int MONTH=2;
          final public static int DATE=5;
          final public static int HOUR=10;
          final public static int MINUTE=12;
          final public static int SECOND=13;/**
     * 以下三个构造函数是:日期创建
     * 构造函数-----start
     */ /**
      * 无参数构造,日期创建
      */
      public NewmanCalendar() {
          this.m_CurrentDate=new GregorianCalendar();
          this.m_NewmanCalendar=this.getNewmanCalendar(this.m_CurrentDate);
      }  /**
       * 参数构造,日期创建
       * @param year
       * @param month
       * @param Date
       */
      public NewmanCalendar(int year,int month,int Date){
          m_CurrentDate=new GregorianCalendar();
          this.m_CurrentDate.set(Calendar.YEAR,year);
          this.m_CurrentDate.set(Calendar.MONTH,month);
          this.m_CurrentDate.set(Calendar.DATE,Date);
          this.m_NewmanCalendar=this.getNewmanCalendar(this.m_CurrentDate);
      }/**
     * 参数构造,日期创建
     * @param Date
     * @param hour
     * @param minute
     * @param second
     */
      public NewmanCalendar(int Date,int hour,int minute,int second){
            this.m_CurrentDate=new GregorianCalendar();
            this.m_CurrentDate=new  GregorianCalendar(this.m_CurrentDate.get(Calendar.YEAR ),
            this.m_CurrentDate.get(Calendar.MONTH ),Date,hour,minute,second);
            this.m_NewmanCalendar=this.getNewmanCalendar(this.m_CurrentDate) ;
      }/**
     * 参数构造,日期创建
     * @param year
     * @param month
     * @param Date
     * @param hour
     * @param minute
     * @param second
     */
      public NewmanCalendar(int year,int month,int Date,int hour,int minute,int second){
            this.m_CurrentDate=new GregorianCalendar(year,month,Date,hour,minute,second);
            this.m_NewmanCalendar=this.getNewmanCalendar(this.m_CurrentDate);
      }  /**
       * 创建同类
       * @param nc1
       */
      public NewmanCalendar(NewmanCalendar nc1){
            this.getNewmanCalendar(nc1.toCalendar(nc1));
      }
    //构造函数-----end  /**
       * 返回当前时间值
       * @return NewmanCalendar类型
       * 日期的获得-----start
       */
      public NewmanCalendar Now(){
          this.m_CurrentDate=new GregorianCalendar();
          return this.getNewmanCalendar(this.m_CurrentDate);
      }/**
     * 从传入的Calendar类,获取NewmanCalendar 转换
     * 多重调用
     * @param calendar类对象
     * @return NewmanCalendar
     */
      private NewmanCalendar getNewmanCalendar(Calendar calendar){//GregorianCalendar is inherit Calendar
          this.m_Year=calendar.get(Calendar.YEAR );
          this.m_Month=calendar.get(Calendar.MONTH );
          this.m_Date=calendar.get(Calendar.DATE) ;
          this.m_Hour=calendar.get(Calendar.HOUR_OF_DAY );//24-hour clock
          this.m_Minute=calendar.get(Calendar.MINUTE);
          this.m_Second=calendar.get(Calendar.SECOND);
          return this;
      }
      //日期的获得-----end  //日期的赋值-----start
      /**
       * 用calendar对象给this.m_NewmanCalendar成员变量赋值
       * @param calendar
       */
      private void SetNewmanCalendar(Calendar calendar){
          this.m_NewmanCalendar=this.getNewmanCalendar(calendar);
      }
      //日期的赋值-----end  /**
       * 以自己的成员变量建立一个NewmanCalendar类型的值。
       * @return
       */
      private NewmanCalendar CreateNewCalendar(){
          this.m_NewmanCalendar=new NewmanCalendar(this.m_Year,this.m_Month,
                        this.m_Date ,this.m_Hour ,this.m_Minute ,this.m_Second);
            return this.m_NewmanCalendar;
      }  /**
       * 属性值获取-----start
       * @return
       * 比我们的实际值小1,因为是从0开始的
       */
      public int getYear(){
            return this.m_Year;
      }  public int getMonth(){//0-11
            return this.m_Month;
      }  public int getDate(){
            return this.m_Date;
      }  public int getHour(){
            return this.m_Hour;
      }  public int getMinute(){
            return this.m_Minute;
      }  public int getSecond(){
            return this.m_Second;
      }
      //属性值获取-----end  /**
       * 获取毫秒值
       * @return long型
       */
      public long getTimeInMillis(){
            long millsecond=this.m_CurrentDate.getTimeInMillis() ;
            return millsecond;
      }
      

  4.   

    /**
       * 日期转换-----start
       *
       */   /**
        * String->NewmanCalendar
        * @param strCalendar
        * @return
        */
       public NewmanCalendar toNewmanCalendar(String strCalendar){//2002/07/08;  2002-10-9 20:21:30
            String str=strCalendar;
            StringToken st=new StringToken(str,"/-: ");
            ArrayList list=new ArrayList();
            int num=0;//值的个数
            list=st.workString();
            if(!MyString.Assert(list))return null;
            num=list.size() ;
            switch(num){
              case 3:{//  2002/07/08
                    this.m_Year=Integer.valueOf((String)list.get(0)).intValue() ;
                    this.m_Month=Integer.valueOf((String)list.get(1)).intValue() ;
                    this.m_Date=Integer.valueOf((String)list.get(2)).intValue() ;
                    this.m_NewmanCalendar=new NewmanCalendar(this.m_Year,this.m_Month,this.m_Date);
                    break;
              }
              case 4:{//  9 20:21:30
                    this.m_Date=Integer.valueOf((String)list.get(0)).intValue() ;
                    this.m_Hour=Integer.valueOf((String)list.get(1)).intValue() ;
                    this.m_Minute=Integer.valueOf((String)list.get(2)).intValue() ;
                    this.m_Second=Integer.valueOf((String)list.get(3)).intValue() ;
                    this.m_NewmanCalendar=new NewmanCalendar(this.m_Date,this.m_Hour,
                          this.m_Minute,this.m_Second);
                    break;
              }
              case 6:{//2002-10-9 20:21:30
                    this.m_Year=Integer.valueOf((String)list.get(0)).intValue() ;
                    this.m_Month=Integer.valueOf((String)list.get(1)).intValue() ;
                    this.m_Date=Integer.valueOf((String)list.get(2)).intValue() ;
                    this.m_Hour=Integer.valueOf((String)list.get(3)).intValue() ;
                    this.m_Minute=Integer.valueOf((String)list.get(4)).intValue() ;
                    this.m_Second=Integer.valueOf((String)list.get(5)).intValue() ;
                    this.m_NewmanCalendar=this.CreateNewCalendar();
                    break;
              }
              default:{
                    this.m_NewmanCalendar=this.Now();
                    break;
              }
            }
            return this.m_NewmanCalendar;
       }   /**
        * Calendar->NewmanCalendar
        * @param strCalendar
        * @return
        */
       public NewmanCalendar toNewmanCalendar(Calendar calendar){
            return this.getNewmanCalendar(calendar);
       }   /**
        * NewmanCalendar->String
        * @param newmancalendar
        * @return 返回外部日期
        * //2002-10-9 20:21:30
        */
       public String toString (NewmanCalendar newmancalendar){
            /*
            String strReturn="";
            int month=newmancalendar.getMonth()+1;//month +1显示
            int date=newmancalendar.getDate() ;        strReturn=""+newmancalendar.getYear()+"-";
            if(month>=10)//month
                  strReturn=strReturn+month;
            else
                  strReturn=strReturn+"0"+month;
            strReturn=strReturn+"-";
            if(date>=10)//date
                  strReturn=strReturn+date;
            else
                  strReturn=strReturn+"0"+date;
                  */        String strReturn="";
            strReturn=this.toStringDate(newmancalendar)+" "+this.toStringTime(newmancalendar);
            return strReturn;
       }   /**
        * NewmanCalendar->String
        * @return 本该类中的日期
        */
       public String toString (){
            this.m_NewmanCalendar=this.CreateNewCalendar();
            return this.toString(this.m_NewmanCalendar);
       }   /**
        * 只有日期返回,无时间
        * NewmanCalendar->String
        * @param newmancalendar
        * @return 2002-10-9
        */
       public String toStringDate (NewmanCalendar newmancalendar){
            String strReturn="";
            int month=newmancalendar.getMonth()+1;//month +1显示
            int date=newmancalendar.getDate() ;        strReturn=""+newmancalendar.getYear()+"-";
            if(month>=10)//month
                  strReturn=strReturn+month;
            else
                  strReturn=strReturn+"0"+month;
            strReturn=strReturn+"-";
            if(date>=10)//date
                  strReturn=strReturn+date;
            else
                  strReturn=strReturn+"0"+date;
            return strReturn;
       }    /**
         * 返回本类中日期
         * @return
         */
        public String toStringDate (){
              return toStringDate(this.CreateNewCalendar());
        }   /**
        * 只有时间返回,无时期
        * NewmanCalendar->String
        * @param newmancalendar
        * @return 20:21:30
        */
       public String toStringTime (NewmanCalendar newmancalendar){
            String strReturn="";
            int hour=newmancalendar.getHour() ;
            int minute=newmancalendar.getMinute();
            int second=newmancalendar.getSecond();        if(hour>=10)//hour
                  strReturn=hour+":";
            else
                  strReturn="0"+hour+":";        if(minute>=10)//minute
                  strReturn=strReturn+minute+":";
            else
                  strReturn=strReturn+"0"+minute+":";        if(second>=10)//second
                  strReturn=strReturn+second;
            else
                  strReturn=strReturn+"0"+second;
            return strReturn;
       }   /**
        * 返回本类中时间
        * @return
        */
       public String toStringTime (){
            return toStringTime(this.CreateNewCalendar());
       }   /**
        * NewmanCalendar->Calendar
        * @param newmancalendar
        * @return
        */
       public Calendar toCalendar(NewmanCalendar newmancalendar){
             this.m_CurrentDate=new GregorianCalendar(newmancalendar.getYear(),
                   newmancalendar.getMonth() ,newmancalendar.getDate() ,newmancalendar.getHour() ,
                   newmancalendar.getMinute() ,newmancalendar.getSecond());
            return this.m_CurrentDate ;
       }
       // 日期转换-----end/**
     * 日期加-----start
     */ /**
      *日期相加
      * @param field "YEAR"
      * @param value
      * @return
      */
      public NewmanCalendar add(int field,int value1){
            this.m_CurrentDate=new GregorianCalendar(this.m_Year,this.m_Month,
                        this.m_Date ,this.m_Hour ,this.m_Minute ,this.m_Second);
            this.m_CurrentDate.add(field,value1);
            return this.toNewmanCalendar(this.m_CurrentDate) ;
      }
     //日期加-----end
      

  5.   

    /**
     * 日期减-----start
     */  /**
       * 日期的差值
       * @param field 关键字
       * year: 1; month: 2; date: 5; hour: 10; minute: 12; second: 13.
       * @param nc1 日期
       * @param nc2 日期
       * @return 差值(nc2-nc1)
       */
      public long getGap(int field,NewmanCalendar nc1,NewmanCalendar nc2){
            long value=this.minusNewmanCalendar(nc1,nc2);//毫秒;
            switch(field){
              case 1:{//year
                    value=nc2.getYear()-nc1.getYear();
                    break;
              }
              case 2:{//month  月份不是很准
                    int yvalue=nc2.getYear()-nc1.getYear();
                    int mvalue=nc2.getMonth()-nc1.getMonth()+1;
                    value=yvalue*12+mvalue;
              /*
                    value=value/(24*60*60*1000);
                    value/=30;
                    */
                    break;
              }
              case 5:{//date
                    value=value/(24*60*60*1000);
                    break;
              }
              case 10:{//hour
                    value=value/(60*60*1000);
                    break;          }
              case 12:{//minute
                    value=value/(60*1000);
                    break;
              }
              case 13:{//second
                    value=value/(1000);
                    break;
              }
              default:{
                     value=0;
                    break;
              }
            }
            return value;
      }  /**
       * 返回差值 毫秒
       * @param nc
       * @return
       * 和成员变量比较
       */
      protected long minusNewmanCalendar(NewmanCalendar nc){
            this.m_NewmanCalendar=this.CreateNewCalendar();
            return this.minusNewmanCalendar(this.m_NewmanCalendar ,nc);
      }  /**
       * 返回差值 毫秒
       * @param nc1
       * @param nc2
       * @return
       * 和外部变量比较
       */
      protected long minusNewmanCalendar(NewmanCalendar nc1,NewmanCalendar nc2 ){
             long millsecond1=nc1.getTimeInMillis() ;
             long millsecond2=nc2.getTimeInMillis() ;
             long gap=millsecond2-millsecond1;
             return gap;
      }
    //日期减-----end
      

  6.   

    java2核心技术这本书你有没有,光盘上的corejava.Day就可以用了,很简单,功能很强大:)