Java常用类日历练习

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;

public class TestCalendar {
    /**
     * 用户随便输入一个日期(yyyy-MM-dd), 打印出这个日期所在月的每一天, 格式如下:
     *  日       一       二       三       四       五       六
     *            1        2        3        4        5        6
     *  技能点:
     *      1. 字符串 --> util.Date
     *      2. Date --> Calendar
     *      3. 修改日期 --> set
     *      4. 记录用户输入的是哪一天 --> get
     *      5. 判断星期几 --> get
     *      6. 获取该月份的最大天数 --> getActuralMa...
     *      7. 日期自增 --> add
     */

    public static void main(String[] args) {
        //创建扫描器
        Scanner sc = new Scanner(System.in);
        while (true){
            //提示用户输入
            System.out.println("请输入一个日期,格式为:2018-12-05,输入exit退出");
            //接受用户输入
            String temp = sc.nextLine();
            if(temp.equalsIgnoreCase("exit")){//判断两个字符串是否相等忽略大小写
                System.out.println("ByeBye");
                break;
            }
            //创建日期格式化对象
            //DateFormat日期格式化类
            DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
            try {
                //string --> date
                Date date = format.parse(temp);//此处需添加异常
                //date --> Calendar
                //创建日历对象
                Calendar calendar = new GregorianCalendar();
                //设置日期为用户输入日期
                calendar.setTime(date);
                //打印日历抬头
                System.out.println("日\t一\t二\t三\t四\t五\t六");
                //记录用户输入的日
                int currentDate = calendar.get(Calendar.DATE);
                //修改日期为此月的第一天
                calendar.set(Calendar.DAY_OF_MONTH,1);
                //获取第一天是星期几
                int week = calendar.get(Calendar.DAY_OF_WEEK);//1-7
                //打印缩进
                for (int i = 1; i < week; i++) {
                    System.out.print("\t");
                }
                //获取当月的最大天数
                int maxDate = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
                //循环打印天数
                for (int i = 1; i <= maxDate; i++) {
                    //如果是当天,打印一个*
                    if(calendar.get(Calendar.DATE) == currentDate){
                        System.out.print("*");
                    }
                    //打印该天
                    System.out.print(i+"\t");
                    //如果是周六,打印换行
                    if(calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY){
                        System.out.println();
                    }
                    //天数加一
                    calendar.add(Calendar.DATE,1);
                }
            } catch (ParseException e) {
                e.printStackTrace();
            }
            System.out.println();
            System.out.println("-------------------------------------------------------------------------------");
        }
    }
}

 

你可能感兴趣的:(Java常用类日历练习)