通过一个具体的年份和月份,想得到这个月份具体有几天。如,我的具体年份和月份是2006年06月,那我想知道2006年06月份到底有多少天!谢谢各位大虾!

解决方案 »

  1.   

    写的不好,别见怪/*    未输入数据时,显示当前系统信息
        输入的正确格式 java InputDate <xxxx>(年) <xx>(月)" 
    */import java.util.Calendar;
    import java.util.GregorianCalendar;class OutputDate{
        
        private int year;
        private int month;
        
        public OutputDate( int year, int month ) {
            this.year = year;
            this.month = month;
        }
        
        private String checkMonth() {
            String[] months = { "1 月","2 月","3 月","4 月",
                                "5 月","6 月","7 月","8 月",
                                "9 月","10 月","11 月","12 月" };    
            return months[month];
        }
        
        private int checkDays() {
            int[] Days = { 31, 28, 31, 30,
                           31, 30, 31, 31,
                           30, 31, 30, 31 };
            return Days[month];
        }
        
        public void printDate() {
            GregorianCalendar gc = new GregorianCalendar( year, month, 1 );
            int week = gc.get( Calendar.DAY_OF_WEEK ) - 1;        System.out.println( "\t\t\t" + year + " 年 " + checkMonth() );
            System.out.println();
            System.out.println( "\t日\t一\t二\t三\t四\t五\t六" );
            
            for( int i = 0; i < week; i++ ) {
                System.out.print( "\t" );    
            }
            
            for( int i = 1; i <= checkDays(); i++ ) {
                if( i <= 9 )
                    System.out.print( "\t " + i );
                else 
                    System.out.print( "\t" + i );
                    
                if(( i + week ) % 7 == 0 ) {
                    System.out.println();    
                }
            }
        }
    }public class DateInformation {
        public static void main( String[] args ) {
            int year, month;
            Calendar cal = Calendar.getInstance();
            
                if( args.length == 2 ) {
                    year = Integer.parseInt( args[0] );
                    month = Integer.parseInt( args[1] ) - 1;
                }
                    
                else{
                    year = cal.get( Calendar.YEAR );
                    month = cal.get( Calendar.MONTH );
                }    
        
            OutputDate di = new OutputDate( year, month );
            di.printDate();
        }
    }
      

  2.   

    向你定义的一个方法:
        private int checkDays() {
            int[] Days = { 31, 28, 31, 30,
                           31, 30, 31, 31,
                           30, 31, 30, 31 };
            return Days[month];
        }
        
    那2004年2月就不对了,他有29天的!
      

  3.   

    Calendar类帮你算好了是否是闰年
      

  4.   

    那具体如何写呢?
    To kevinliuu@.@
      

  5.   

    import java.util.Calendar;
    public class DaysOfMonth{
    public static void main(String [] args){
    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.YEAR,2006);
    calendar.set(Calendar.MONTH,6);
    System.out.println("DAY_OF_MONTH :" + calendar.getMaximum(Calendar.DAY_OF_MONTH ));
    System.out.println("DATE :" + calendar.getMaximum(Calendar.DATE ));
    }
    }
      

  6.   

    /**
         * 根据年月判断当前月的日期天数
         * @param s String 格式为 yyyy-MM的日期字符串
         * @return int 当月天数
         * @throws ParseException
         */
        public static int getDaysByMonth(String s)
            throws ParseException
        {
            SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM") ;
            Date d = sf.parse(s);
            Calendar c = Calendar.getInstance();
            c.setTime(d);
            c.add(Calendar.MONTH, 1); //加1月
            c.add(Calendar.DATE, -1); //减1日
            return c.get(Calendar.DATE);
        }
      

  7.   

    import java.util.Calendar;
    public class DaysOfMonth{
    public static void main(String [] args){
    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.YEAR,2000);
    calendar.set(Calendar.MONTH,2);
    System.out.println("DAY_OF_MONTH :" + calendar.getLeastMaximum(Calendar.DAY_OF_MONTH ));
    System.out.println("DATE :" + calendar.getLeastMaximum(Calendar.DATE ));
    }
    }
    sorry,搞错了。应该是这个。
      

  8.   

    ok,thanks to :lye2000000_super(我自横刀香甜笑) and kevinliuu(@。@)
      

  9.   

    我刚才看了看Calendar,好像没这么麻烦    /**
         * 本方法返回某年某月的天数
         * @param year int
         * @param month int
         * @return int
         */
        public static int testDate(int year,int month){
            java.util.Calendar cal=java.util.Calendar.getInstance();
            cal.set(year,month,0,0,0,0);
            
            return cal.DATE;
        }
      

  10.   

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;public class TestMonth {
        public static void main(String[] args) throws ParseException {
            // 设置日期表现样式
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
            // 输入的日期
            String str = "2006-08-03";
            // 对应的Date实例
            Date date = format.parse(str);
            // 获得Calendar实例
            Calendar calendar = Calendar.getInstance();
            // 根据date赋值
            calendar.setTime(date);
            // 计算是当月的第几天
            int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
            System.out.printf("输入的日期是当月的第%d天\n", dayOfMonth);
            // 计算当月的第一天
            calendar.add(Calendar.DATE, 1 - dayOfMonth);
            System.out.printf("当月的第一天是%s\n", format.format(calendar.getTime()));
            // 计算下月的第一天
            calendar.add(Calendar.MONTH, 1);
            System.out.printf("下月的第一天是%s\n", format.format(calendar.getTime()));
            // 计算当月的最后一天
            calendar.add(Calendar.DATE, -1);
            System.out.printf("当月的最后一天是%s\n", format.format(calendar.getTime()));
            // 计算是当月一共几天
            dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
            System.out.printf("当月一共%d天\n", dayOfMonth);
        }
    }