日期时间API(JDK8新增)

日期时间API(JDK8新增)

JDK8出现之前
JDK8新时间日期API



LocalDate、LocalTime、LocalDateTime 的使用

类似于Calendar

LocalDateTime相较于LocalDate、LocalTime,使用频率要高

实例化

1. now():获取当前的日期、时间、日期+时间

    LocalDate localDate = LocalDate.now(); // 2021-02-02

    LocalTime localTime = LocalTime.now();    //14:49:05.981

    LocalDateTime localDateTime = LocalDateTime.now();    //2021-02-02T14:49:05.981

2. of():设置指定的年、月、日、时、分、秒。没有偏移量

    LocalDateTime localDateTime1 = LocalDateTime.of(2020, 10, 6, 13, 23, 43); // 2020-10-06T13:23:43

方法

1. getXxx():获取相关的属性 (eg. 这个月的第几天)

    System.out.println(localDateTime.getDayOfWeek());    //TUESDAY

    System.out.println(localDateTime.getMonth());    //FEBRUARY

    System.out.println(localDateTime.getMonthValue());    // 2

    System.out.println(localDateTime.getMinute());    //49

2. withXxx():设置相关的属性(不可变性-有返回值接收)

    LocalDate localDate1 = localDate.withDayOfMonth(22);

    System.out.println(localDate);    //2021-02-02

    System.out.println(localDate1);    //2021-02-22

3. plusXxx():将相关的属性加上几个数(不可变性-有返回值接收)

    LocalDateTime localDateTime3 = localDateTime.plusMonths(3);

    System.out.println(localDateTime);    //2021-02-02T14:49:05.981

    System.out.println(localDateTime3);    //2021-05-02T14:49:05.981

4. minusXxx():将相关的属性减去几个数(不可变性-有返回值接收)

    LocalDateTime localDateTime4 = localDateTime.minusDays(6);

    System.out.println(localDateTime);    //2021-02-02T14:49:05.981

    System.out.println(localDateTime4);    //2021-01-27T14:49:05.981



Instant 的使用

相当于java.util.Date类

主要方法

实例化

1.Instant:now():获取本初子午线对应的标准时间

    Instant instant = Instant.now();

    System.out.println(instant);    //2019-02-18T07:29:41.719Z (当前的本初子午线对应时间)

2. OffsetDateTime:Xxx.atOffset添加时间的偏移量 (改为所在地的时区)

    OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(8));

    System.out.println(offsetDateTime);    //2019-02-18T15:32:50.611+08:00

方法

1. toEpochMilli():获取自1970年1月1日0时0分0秒(UTC)开始的毫秒数

    相当于 Date类的getTime(),即时间戳

    long milli = instant.toEpochMilli();    //1612250663726

2. ofEpochMilli():通过给定的毫秒数,获取Instant实例

    相当于Date(long millis)

    Instant instant1 = Instant.ofEpochMilli(1612250663726L);

    System.out.println(instant1);    //2021-02-02T07:24:23.726Z


DateTimeFormatter:格式化或解析日期、时间

类似于SimpleDateFormat

实例化和对应的格式化与解析

方式一:预定义的标准格式

实例化

ISO_LOCAL_DATE_TIME;ISO_LOCAL_DATE;ISO_LOCAL_TIME

    DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;

格式化:日期-->字符串

        LocalDateTime localDateTime = LocalDateTime.now();

        String str1 = formatter.format(localDateTime);

        System.out.println(localDateTime);

        System.out.println(str1);//2019-02-18T15:42:18.797

解析:字符串 -->日期

        TemporalAccessor parse = formatter.parse("2019-02-18T15:42:18.797");

        System.out.println(parse);

方式二:本地化相关的格式

实例化

ofLocalizedDateTime()

        FormatStyle.LONG / FormatStyle.MEDIUM / FormatStyle.SHORT :三种方式返回的格式不同

        适用于LocalDateTime

        DateTimeFormatter formatter1 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG);

ofLocalizedDate()

        FormatStyle.FULL / FormatStyle.LONG / FormatStyle.MEDIUM / FormatStyle.SHORT : 同上

        适用于LocalDate

格式化

        第一种实例化(LocalDateTime)

        String str2 = formatter1.format(localDateTime);

        System.out.println(str2);    //2019年2月18日 下午03时47分16秒

        DateTimeFormatter formatter2 = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM);

        第二种实例化(LocalDate)

        String str3 = formatter2.format(LocalDate.now());

        System.out.println(str3);    //2019-2-18

方式三:自定义的格式 ⚠️

实例化

ofPattern(“yyyy-MM-dd hh:mm:ss”)

        DateTimeFormatter formatter3 = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");

格式化

        String str4 = formatter3.format(LocalDateTime.now());

        System.out.println(str4);//2019-02-18 03:52:09

解析

        TemporalAccessor accessor = formatter3.parse("2019-02-18 03:52:09");

        System.out.println(accessor);


你可能感兴趣的:(日期时间API(JDK8新增))