今日内容
时间日期类 【掌握】
异常 【掌握】

时间日期类 【掌握】
时间日期概述
中国是位于东八区,有时差
常见时间单位的换算
1天 = 24小时
1小时 = 60分
1分 = 60秒
1秒 = 1000毫秒 **
1毫秒 = 1000微妙

    时间原点(基准时间)
        1970年1月1日 0时0分0秒

JDK8以前
    Date类
        Date类概述
            JDK给我们提供两个同名的Date类,但是它们绝对是位于不同的包,
            一个是位于java.util包下,一个是位于java.sql包下,今天我们使用的
            是java.util包下的这个Date类,使用的时候不要导错包

            Date类可以封装时间,封装的时间非常精确可以精确到毫秒值
            封装的时间可以是任意的时间,可以表示过去、现在和未来

            Date类最初功能的非常强大和完整,但是有弊端(不易国际化),JDK1.1开始就对Date类做了调整
            将两类功能抽取出来,Date类中的这两类功能就过时了,不推荐使用,将抽取出来的这两个功能分别
            放到Calendar类和SimpleDateFormat类中

        构造方法
            Date() :表示的是现在(当前系统时间)
                    当前系统时间:就是程序运行所在的电脑的时间
            Date(long date) :表示的是 时间原点+毫秒值 所落到的时间
                * long date参数表示的意思是毫秒值

        常用成员方法
             long getTime():获取毫秒值
             void setTime(long time) :设置毫秒值,也是在时间原点的基础上+毫秒值落到哪个时间就是哪个时间

        class Date {
            private long time;

            public Date() {}
            public Date(long time) {
                this.time = time;
            }

            public int getTime() {
                return time;
            }

            public void setTime(long time) {
                this.time = time;
            }
        }


        // 获取当前时间的毫秒值
        System.out.println(System.currentTimeMillis());
        System.out.println(new Date().getTime());

    SimpleDateFormat类
        格式化和解析类


        构造方法
            SimpleDateFormat(String pattern)
            * String pattern 模式,用于指定时间的格式

                Thu Jan 01 08:00:01 CST 1970    这种格式中国人不习惯
                1970年1月1日 8时0分0秒          yyyy年MM月dd日 HH时mm分ss秒
                1970年1月1日 08:00:00           yyyy年MM月dd日 HH:mm:ss
                1970-1-1 08:00:00               yyyy-MM-dd HH:mm:ss
                1970/1/1 08:00:00                yyyy/MM/dd HH:mm:ss

                年       y
                月       M
                日       d
                时       H
                分       m
                秒       s


        常用成员方法
            格式化:是将Date对象按照指定的模式转换一个时间字符串,为了显示时间方便
                Date -> String
                public final String format(Date date)

            解析:是将一个时间字符串按照指定的模式识别出来,然后转换为Date对象,为了操作时间方便
                String -> Date
                public Date parse(String source)



    Calendar类
        日历类,可以单独的操作(获取、修改、增减等)年、月、日、时、分、秒
        是一个抽象类


        以后在使用一个抽象类的时候,有两种方式:
            1、使用其子类创建对象   DateFormat/SimpleDateFormat
            2、看看抽象类中有没有静态方法,该静态方法可以返回该抽象类的子类对象  Calendar/GregorianCalendar

        获取对象
            static Calendar getInstance():获取的日历对象默认时间是当前时间

        成员方法
            获取
                 int get(int field)
                    * int field 参数 传递是一个标记,你要告诉我获取的是年、月还是日等等

            修改
                 void set(int field, int value)
                          将给定的日历字段设置为给定值。

                 void set(int year, int month, int date)
                          设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。
                 void set(int year, int month, int date, int hourOfDay, int minute)
                          设置日历字段 YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY 和 MINUTE 的值。
                 void set(int year, int month, int date, int hourOfDay, int minute, int second)
                          设置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE 和 SECOND 的值。

            增减
                void add(int field, int amount)

            转换(Date和Calendar的互转)
                 void setTime(Date date):将Calendar对象中的时间设置为和参数Date对象一样的时间
                 Date getTime():将Calendar对象中的时间获取出来设置到Date对象中


JDK8以及之后
    LocalDateTime类   年月日+时分秒        【为主进行学习】
    LocalDate类       年月日
    LocalTime类       时分秒
    DateTimeFormatter类                  【格式化类,指定格式化和解析的模式】

    Period类
    Duration类

    ChronoUnit类           【了解】
    ChronoField类            【了解】


    LocalDateTime类
        获取LocalDateTime对象
            static LocalDateTime now():获取的对象表示的时间是当前时间
            static LocalDateTime of(int year, int month, int dayOfMonth, int hour, int minute, int second)


        格式化和解析(类似于SimpleDateFormat类的功能)
                String format(DateTimeFormatter formatter)
                    * DateTimeFormatter用于指定格式化和解析的模式
                static LocalDateTime parse(CharSequence text, DateTimeFormatter formatter)
                    * CharSequence text参数传递的就是要解析的时间字符串
                    * DateTimeFormatter用于指定格式化和解析的模式


        单独操作年月日时分秒(类似于Calendar类的功能)
            获取
                public int getYear() 获取年
                public int getMonthValue() 获取月份(1-12)
                public int getDayOfMonth() 获取月份中的第几天(1-31)
                public int getDayOfYear() 获取一年中的第几天(1-366)
                public DayOfWeek getDayOfWeek() 获取星期
                public int getMinute() 获取分钟
                public int getHour() 获取小时
            修改
                public LocalDateTime withYear(int year) 直接修改年
                public LocalDateTime withMonth(int month) 直接修改月
                public LocalDateTime withDayOfMonth(int dayofmonth) 直接修改日期(一个月中的第几天)
                public LocalDateTime withDayOfYear(int dayOfYear) 直接修改日期(一年中的第几天)
                public LocalDateTime withHour(int hour) 直接修改小时
                public LocalDateTime withMinute(int minute) 直接修改分钟
                public LocalDateTime withSecond(int second) 直接修改秒
            增减
                public LocalDateTime plusYears (long years) 添加或者减去年
                public LocalDateTime plusMonths(long months) 添加或者减去月
                public LocalDateTime plusDays(long days) 添加或者减去日
                public LocalDateTime plusHours(long hours) 添加或者减去时
                public LocalDateTime plusMinutes(long minutes) 添加或者减去分
                public LocalDateTime plusSeconds(long seconds) 添加或者减去秒
                public LocalDateTime plusWeeks(long weeks) 添加或者减去周

                public LocalDateTime minusYears (long years) 减去或者添加年
                public LocalDateTime minusMonths(long months) 减去或者添加月
                public LocalDateTime minusDays(long days) 减去或者添加日
                public LocalDateTime minusHours(long hours) 减去或者添加时
                public LocalDateTime minusMinutes(long minutes) 减去或者添加分
                public LocalDateTime minusSeconds(long seconds) 减去或者添加秒
                public LocalDateTime minusWeeks(long weeks) 减去或者添加周