美文网首页
日期时间API(JDK8新增)

日期时间API(JDK8新增)

作者: DOB_8199 | 来源:发表于2021-02-02 17:01 被阅读0次

    日期时间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新增)

          本文链接:https://www.haomeiwen.com/subject/brwjtltx.html