给定年月 打印当月日历

 public void getCalendar(int year, int mouth) {
        Calendar cal = Calendar.getInstance();
        int daynum = 0;
        int print =0;
       if (year < 1800 || year > cal.get(Calendar.YEAR)){
           System.out.println("年份输入错误");
           throw new Error();
       }
       if (mouth <1 || mouth>12){
           System.out.println("月份输入错误");
           throw new Error();
       }
       if (mouth == 2){
          if (year%4 ==0){
              daynum =28;
          } else {
              daynum =28;
          }
       } else if (mouth == 1 || mouth == 3||mouth == 5||mouth == 7||mouth == 8||mouth == 10||mouth == 12){
           daynum = 31;
       } else {
           daynum = 30;
       }
        cal.setTime(getTime(year,mouth));
        int w=cal.get(Calendar.DAY_OF_WEEK)-1;
        if(w==0) w=7;
        System.out.println("周日\t周一\t周二\t周三\t周四\t周五\t周六\t");
        for (int j = 1;j<=w;j++){
            System.out.print("*\t");
            print++;
        }
        for(int i=1;i<=daynum;i++){
           if (print%7 == 0){
               System.out.print("\n");
           }
            System.out.print(i+"\t");
            print++;
        }
    }
   private Date getTime(int year,int mouth){
        //java8 DateTimeFormatter yyyy-mm-dd
        String data = year+"-"+mouth+"-"+"01";
        if (mouth < 10){
            data = year+"-"+"0"+mouth+"-"+"01";
        }
       System.out.println(data);
       DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
       LocalDate localDate = LocalDate.parse(data, formatter);
       Instant instant = localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant();
       java.util.Date utilDate = java.util.Date.from(instant);
       return utilDate;
   }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值