输入一个任意时间(如:2018年9月5日),打印出当月的日期详情(如图)

输入一个任意时间(如:2018年9月5日),打印出当月的日期详情(如图)(阴影使用*号代替,如5*)

这里写图片描述
代码

        Scanner sc = new Scanner(System.in);
        //日期的格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年M月d日");
        String date;
        //提示并输入
        System.out.print("请输入日期(如:2018年9月5日):");
        date = sc.nextLine();
        //把输入的日期转为日期类型的数据
        Date date1 = sdf.parse(date);
        //创建一个日期类
        Calendar c1 = Calendar.getInstance();
        //设置这个日期类为您输入的日期
        c1.setTime(date1);

        //得到输入的日期的月分的第一天
        Calendar firstDay = Calendar.getInstance();
        firstDay.setTime(date1);
        firstDay.set(Calendar.DATE, 1);

        //得到下个月的第一天
        Calendar lastDay = Calendar.getInstance();
        lastDay.setTime(date1);
        lastDay.add(Calendar.MONTH, 1);
        lastDay.set(Calendar.DATE, 1);

        System.out.println("日\t一\t二\t三\t四\t五\t六");
        while(!firstDay.equals(lastDay)) {
            //通过判断第一天是星期几,加空格。
            if(firstDay.get(Calendar.DATE)==1) {
                for (int i = 1; i < firstDay.get(Calendar.DAY_OF_WEEK); i++) {
                    System.out.print(" \t");
                }
            }
            //打印这个月的日期 ,在输入的那个日期上加\*号
            if(c1.get(Calendar.DATE)==firstDay.get(Calendar.DATE)) {
                System.out.print(firstDay.get(Calendar.DATE)+"*\t");
            }else {
                System.out.print(firstDay.get(Calendar.DATE)+"\t");
            }
            //换行
            if(firstDay.get(Calendar.DAY_OF_WEEK) == 7) {
                System.out.println();
            }
            firstDay.add(Calendar.DATE, 1);
        }

实现效果
实现效果

猜你喜欢

转载自blog.csdn.net/leeyoung59/article/details/82729964