目录

java后端开发day28-常用API三时间类包装类

java后端开发day28–常用API(三)时间类&包装类

https://i-blog.csdnimg.cn/direct/41eab08a7de141a4a7b234d2d106f51b.png#pic_center

(以下内容全部来自上述课程)

https://i-blog.csdnimg.cn/direct/f0da25feca96427e8425156c75caea89.png#pic_center

https://i-blog.csdnimg.cn/direct/7babf22d618d489dad9e6caecfae7afb.png#pic_center

1.JDK7以前的时间相关类

1.Date

全世界的时间,有一个统一的计算标准。

格林威治时间:GMT(已过时)

原子钟(现在)

中国标准时间:世界标准时间+8小时(东八区)

时间单位换算:

  • 1秒=1000毫秒
  • 1毫秒=1000微妙
  • 1微妙=1000纳秒

Date类是一个JDK写好的Javabean类,用来描述时间,精确到毫秒。

利用空参构造创建的对象,默认表示系统当前时间。

利用有参构造创建的对象,表示指定的时间。

package Date;
import java.util.Date;

public class Demo1 {
    public static void main(String[] args) {
        //1.创建对象表示一个时间
        Date d1 = new Date();

        //2.创建对象表示一个指定的时间
        Date d2 = new Date(0L);
        System.out.println(d2);

        //3.setTime 修改时间对象中的毫秒值
        //1000毫秒=1秒
        d2.setTime(1000L);
        System.out.println(d2);

        //4.getTime 获取时间对象中的毫秒值
        long time = d2.getTime();
        System.out.println(time);

    }
}

2.SimpleDateFormat

1.概述
  • 格式化:把时间变成我们喜欢的格式。
  • 解析:把字符串表示的时间变成Date对象。
2.方法

https://i-blog.csdnimg.cn/direct/1fee8e964fea44619b2f309104729672.jpeg

3.格式

https://i-blog.csdnimg.cn/direct/fa39cac3add54d0385b3e2476e380d4d.jpeg

API帮助文档:

https://i-blog.csdnimg.cn/direct/9319e090579d40cabce6b6a719bd7e48.jpeg

package Date;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.ParseException;

public class Demo2 {
    public static void main(String[] args) {
        /*
        public SimpleDateFormat()                   默认格式
        public SimpleDateFormat(String pattern)     指定格式
        public String format(Date date)              日期转字符串
        public Date parse(String source)            字符串转日期
        */
        //1.定义一个字符串表示时间
        String time = "2022-12-12 12:12:12";
        //2.利用空参构造创建SimpleDateFormat对象
        //细节:
        //1.格式必须要和字符串的时间格式一致
        //2.格式中如果出现了月份,则月份必须要写m
        //3.格式中如果出现了分钟,则分钟必须要写m
        //4.格式中如果出现了秒,则秒必须要写s
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            Date d = sdf.parse(time);
            System.out.println(d.getTime()); //1670876332000
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }

    public static void method() {
        //1.利用空参构造创建SimpleDateFormat对象
        SimpleDateFormat sdf = new SimpleDateFormat();
        //2.创建日期对象
        Date d = new Date();
        //3.调用format方法,把日期转成字符串
        String s = sdf.format(d);
        System.out.println(s);

        //4.利用带参构造创建SimpleDateFormat对象
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //5.调用format方法,把日期转成字符串
        String s2 = sdf2.format(d);
        System.out.println(s2);
    }

}

3.Calendar

1.概述
  • Calendar代表了系统当前时间的日历对象,可以单独修改、获取时间中的年,月,日
  • 细节:Calendar是一个抽象类,不能直接创建对象。
  • 获取对象的方法:public static Calendar getInstance() 获取当前时间的日历对象
2.方法

https://i-blog.csdnimg.cn/direct/6c9270360df744678cc622bc76630f03.jpeg

字段:属性,成员变量。比如:年,月,日

细节—–获取日历对象:

  • 底层原理:会根据系统的不同时区来获取不同的日历对象,默认表示当前的时间。
  • 把时间中的纪元,年,月,日,时,分,秒,星期,等等的都放到一个数组当中。
  • 月份:范围0~11,如果获取出来的是0,那么实际上是1月
  • 星期:在老外的眼里,星期日是一周中的第一天。

2.JDK8新增的时间相关类

https://i-blog.csdnimg.cn/direct/3e4017af507f448bbb3c3c84be3f16fa.jpeg

1.Date类

1.ZoneId:时区

https://i-blog.csdnimg.cn/direct/70aa95fadf734bb0a9f253dba5f51850.jpeg

2.Instant:时间戳

https://i-blog.csdnimg.cn/direct/992982c020c54f299b18636f7c55e8cf.jpeg

3.ZoneDateTime:带时区的时间

https://i-blog.csdnimg.cn/direct/946a45745d4c4d128e0b1190486af950.jpeg

细节:

  • JDK8新增的时间对象都是不可变的
  • 如果我们修改了,减少了,增加了时间
  • 那么调用者是不会发生改变的,会产生一个新的时间

2.日期格式化类

DateTimeFormatter:时间的格式化和解析

https://i-blog.csdnimg.cn/direct/53d20b1e90f84adca3e1f8a17e234a5a.jpeg

3.日历类

1.LocalDate:年、月、日
2.LocalTime:时、分、秒
3.LocalDateTime:年、月、日、时、分、秒
4.统一

https://i-blog.csdnimg.cn/direct/5500a36c07fe4ea38226f6fa9a208444.jpeg

https://i-blog.csdnimg.cn/direct/7aea96f4b1a24fe4ad876875a8b56840.jpeg

4.工具类(了解)

1.Duration:时间间隔(秒,纳秒)
2.Period:时间间隔(年,月,日)
3.ChronoUnit:时间间隔(所有单位)

3.包装类

基本数据类型对应的 引用类型

就是都是new出来的对象。

https://i-blog.csdnimg.cn/direct/903c5316e9aa496a8d4e03ff2d5c339f.jpeg

https://i-blog.csdnimg.cn/direct/079f75feb9da4d4389810f9514357696.jpeg

1.Integer

1.获取对象

https://i-blog.csdnimg.cn/direct/8d9ffa600e254b12a26bdc5a2fa98316.jpeg

范围:-128~127

底层原理:

  • 因为在实际开发中,-128~127之间的数据,用的比较多。
  • 如果每次都是new对象,就太浪费内存了
  • 所以,提前把这个范围之内的每一个数据都创建好对象
  • 如果要用到了就不会创建新的,而是返回已经创建好的对象。
2.自动装箱和自动拆箱

JDK5的时候提出了一个机制:自动装箱和自动拆箱

  • 自动装箱:把基本数据类型 自动 变为其对应的包装类。
  • Integer i1 = 10;
  • 自动拆箱:把包装类 自动 地变成其对象的基本数据类型。
  • Integer i2 = new Integer(10);
  • int i = i2;

2.成员方法 请添加图片描述

拓展:

  • Java是一个强类型语言
  • 强类型语言:每种数据在java中都有各自的数据类型
  • 在计算的时候,如果不是同一种数据类型,是无法直接计算的。

细节:

  • 在类型转换的时候,括号中的参数只能是数字不能是其他,否则代码会报错。
  • 8种包装类当中,除了Character都有对应的parseXxx的方法,进行类型转换。