day13-Calendar日历

一、Calendar

1.Calendar是抽象类  单例的设计模式

//单例模式 获取实例
Calendar calendar = Calendar.getInstance();

//获取某一年一共多少天   可以用来判断闰年 366天
int days = calendar.getActualMaximum(Calendar.DAY_OF_YEAR);

//获取某一年的2月有多少天
//可以先将日期设置到那年的3月1日,然后利用add()往前偏移一天
calendar.set(2000,2,1);//月份从0-11
calendar.add(Calendar.DAY_OF_MONTH,-1);//3月1日往前偏移一天

2.Calendar打印万年历(小练习)

       int year,month ;
        
        Scanner scanner = new Scanner(System.in);
        
        while(true) {
        System.out.println("请输入1900年之后的年份 如: 2018");
        year = scanner.nextInt();
        if(year<1900||year>9999) {
            System.out.println("年份输入有误,请重新输入");
            continue;
        }
        
        scanner.nextLine();
        System.out.println("请输入1-12的月份  如:10");
        month = scanner.nextInt();
        if(month<1||month>12) {
            System.out.println("月份输入有误,请重新输入");
            continue;
        }
        
        scanner.close();
        break;
        
        }
        
        Calendar calendar = Calendar.getInstance();
        // 设置到当前年月的第一天
        calendar.set(year, month - 1, 1);
    
        // 获取当前月份一共多少天
        int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

        // 获取当前月份的第一天是星期几       数字与实际星期差1,且老美的第一天是星期日
        int week = calendar.get(Calendar.DAY_OF_WEEK); 
            
        //前面空格的数字就是等于星期几的数字
        int spaceNum=week-1;

        System.out.println("\t\t     "+year+"年"+month+"月\r");
        //打印星期固定格式
        System.out.println("日\t一\t二\t三\t四\t五\t六");
        
        //打印1号前面的空格数
        for(int i =0;i<spaceNum;i++) {
            System.out.print("\t");
        }
        
        //打印日期数字
        for(int i =1;i<=days;i++) {
            System.out.print(i+"\t");
            //判断是否换行  前面空格数+当前日期   若是7的倍数就要换一行了
            if((spaceNum+i)%7==0) {
                System.out.println();
            }        
            
        }
    }

 运行结果:

猜你喜欢

转载自www.cnblogs.com/zhiai007/p/9392860.html