LocalDateTime相关使用

发布时间:2023年12月19日

使用原因

????????Date-Time API中的所有类均生成不可变实例,它们是线程安全的;之前的Date对象和Calendar对象存在线程不安全的情况。所以在开发过程中使用Date-Time下的类实现时间相关操作。

相关方法

? ? ? ? 1:获取当前时间

????????????????

????????????????

    @Test
    void contextLoads() {
        //直接获取当前时间
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println("默认获取的时间-> " + localDateTime);
        //根据时钟获取当前时间
        LocalDateTime clockDefaultNow = LocalDateTime.now(Clock.systemDefaultZone());
        System.out.println("根据时钟获取当前时间-> " + clockDefaultNow);
        //根据时区获取当前时间
        LocalDateTime zoneDefaultNow = LocalDateTime.now(ZoneId.systemDefault());
        System.out.println("根据时区获取当前时间-> " + zoneDefaultNow);
    }

    //输出结果
    //默认获取的时间-> 2023-12-15T10:46:15.671467300
    //根据时钟获取当前时间-> 2023-12-15T10:46:15.672465800
    //根据时区获取当前时间-> 2023-12-15T10:46:15.673463800

? ? ? ? 2:格式化LocalDateTime

????????????????

????????????????

    @Test
    void contextLoads() {
        //直接获取当前时间
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println("默认获取的时间" + localDateTime);
        String format = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        System.out.println("格式化为`yyyy-MM-dd HH:mm:ss`格式后的时间-> " + format);
        String format1 = localDateTime.format(DateTimeFormatter.ofPattern("yyyyMMdd HHmmss"));
        System.out.println("格式化为`yyyy-MM-dd HH:mm:ss`格式后的时间-> " + format1);
        //可以将LocalDateTime转化为只要年份的字符串
        String format3 = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
        System.out.println("格式化为`yyyy-MM-dd HH:mm:ss`格式后的时间-> " + format3);
        //可以将LocalDateTime转化为只要时间的字符串
        String format4 = localDateTime.format(DateTimeFormatter.ofPattern("HH:mm:ss"));
        System.out.println("格式化为`yyyy-MM-dd HH:mm:ss`格式后的时间-> " + format4);
    }
    // 输出结果
    // 默认获取的时间2023-12-15T10:53:54.704295700
    // 格式化为`yyyy-MM-dd HH:mm:ss`格式后的时间-> 2023-12-15 10:53:54
    // 格式化为`yyyy-MM-dd HH:mm:ss`格式后的时间-> 20231215 105354
    // 格式化为`yyyy-MM-dd HH:mm:ss`格式后的时间-> 2023-12-15
    // 格式化为`yyyy-MM-dd HH:mm:ss`格式后的时间-> 10:53:54

? ? ? ? 3:将指定时间转为LocalDateTime格式

????????????????

????????????????

    @Test
    void contextLoads() {
        //根据年,月,日,时,分获取LocalDateTime 
        LocalDateTime localDateTime1 = LocalDateTime.of(2023, 12, 15, 11, 2);
        System.out.println("根据年,月,日,时,分获取时间-> " + localDateTime1);
        //根据年,月,日,时,分,秒获取LocalDateTime 
        LocalDateTime localDateTime2 = LocalDateTime.of(2023, 12, 15, 11, 2,2);
        System.out.println("根据年,月,日,时,分,秒获取时间-> " + localDateTime2);
        //根据年,月,日,时,分,秒,纳秒获取LocalDateTime 
        LocalDateTime localDateTime3 = LocalDateTime.of(2023, 12, 15, 11, 2,2,999);
        System.out.println("根据年,月,日,时,分,秒,纳秒获取时间-> " + localDateTime3);
        //根据年,Month月,日,时,分获取LocalDateTime 
        LocalDateTime localDateTime4 = LocalDateTime.of(2023, Month.DECEMBER, 15, 11, 2);
        System.out.println("根据年,Month月,日,时,分获取时间-> " + localDateTime4);
        //根据LocalDate,LocalTime获取LocalDateTime 
        LocalDateTime localDateTime5 = LocalDateTime.of(LocalDate.now(),LocalTime.now());
        System.out.println("根据LocalDate,LocalTime获取时间-> " + localDateTime5);
    }
    // 输出结果
    // 根据年,月,日,时,分获取时间-> 2023-12-15T11:02
    // 根据年,月,日,时,分,秒获取时间-> 2023-12-15T11:02:02
    // 根据年,月,日,时,分,秒,纳秒获取时间-> 2023-12-15T11:02:02.000000999
    // 根据年,Month月,日,时,分获取时间-> 2023-12-15T11:02
    // 根据LocalDate,LocalTime获取时间-> 2023-12-15T11:17:11.865127800

????????4:将字符串转为LocalDateTime

????????????????

????????????????

    @Test
    void contextLoads() {
        //将字符串转为LocalDateTime
        LocalDateTime localDateTime1 = LocalDateTime.parse("2023-12-15T12:12:12");
        System.out.println("将字符串转为LocalDateTime-> " + localDateTime1);
        //将字符串转为指定格式的LocalDateTime,这里注意,时间字符串要与指定的格式匹配
        LocalDateTime localDateTime2 = LocalDateTime.parse("2023/12/15 10:46:15",DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"));
        System.out.println("将字符串转为指定格式的LocalDateTime-> " + localDateTime2);
    }
    // 输出结果
    // 将字符串转为LocalDateTime-> 2023-12-15T12:12:12
    // 将字符串转为指定格式的LocalDateTime-> 2023-12-15T10:46:15

????????5:将Instant转为LocalDateTime

????????????????

????????

    @Test
    void contextLoads() {
        LocalDateTime localDateTime6 = LocalDateTime.ofInstant(Instant.now(),ZoneId.systemDefault());
        System.out.println("localDateTime6-> " + localDateTime6);
        String format = localDateTime6.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        System.out.println("格式化后的时间-> " + format);
    }
    // 输出结果
    // localDateTime6-> 2023-12-15T13:44:09.088143900
    // 格式化后的时间-> 2023-12-15 13:44:090

????????6:LocalDateTime实现加法运算

????????????????

????????????????

    @Test
    void contextLoads() {
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println("当前时间-> " + localDateTime);
        //获取指定天后的时间
        LocalDateTime localDateTime1 = localDateTime.plusDays(2);
        System.out.println("获取指定天后的时间-> " + localDateTime1);
        //获取指定小时后的时间
        LocalDateTime localDateTime2 = localDateTime.plusHours(2);
        System.out.println("获取指定小时后的时间-> " + localDateTime2);
        //获取指定分钟后的时间
        LocalDateTime localDateTime3 = localDateTime.plusMinutes(2);
        System.out.println("获取指定分钟后的时间-> " + localDateTime3);
        //获取指定月后的时间
        LocalDateTime localDateTime4 = localDateTime.plusMonths(2);
        System.out.println("获取指定月后的时间-> " + localDateTime4);
        //获取指定纳秒后的时间
        LocalDateTime localDateTime5 = localDateTime.plusNanos(50);
        System.out.println("获取指定纳秒后的时间-> " + localDateTime5);
        //获取指定秒后的时间
        LocalDateTime localDateTime6 = localDateTime.plusSeconds(50);
        System.out.println("获取指定秒后的时间-> " + localDateTime6);
        //获取指定周后的时间
        LocalDateTime localDateTime7 = localDateTime.plusWeeks(2);
        System.out.println("获取指定周后的时间-> " + localDateTime7);
        //获取指定年后的时间
        LocalDateTime localDateTime8 = localDateTime.plusYears(2);
        System.out.println("获取指定年后的时间-> " + localDateTime8);
    }
    // 输出结果
    // 当前时间-> 2023-12-15T11:41:55.924123200
    // 获取指定天后的时间-> 2023-12-17T11:41:55.924123200
    // 获取指定小时后的时间-> 2023-12-15T13:41:55.924123200
    // 获取指定分钟后的时间-> 2023-12-15T11:43:55.924123200
    // 获取指定月后的时间-> 2024-02-15T11:41:55.924123200
    // 获取指定纳秒后的时间-> 2023-12-15T11:41:55.924123250
    // 获取指定秒后的时间-> 2023-12-15T11:42:45.924123200
    // 获取指定周后的时间-> 2023-12-29T11:41:55.924123200
    // 获取指定年后的时间-> 2025-12-15T11:41:55.924123200

? ? ? ? 7:LocalDateTime实现减法运算

????????????????

????????????????

    @Test
    void contextLoads() {
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println("当前时间为-> " + localDateTime);
        //获取两天前的时间
        LocalDateTime localDateTime1 = localDateTime.minusDays(2);
        System.out.println("获取两天前的时间-> " + localDateTime1);
        //获取两小时前的时间
        LocalDateTime localDateTime2 = localDateTime.minusHours(2);
        System.out.println("获取两小时前的时间-> " + localDateTime2);
        //获取两分钟前的时间
        LocalDateTime localDateTime3 = localDateTime.minusMinutes(2);
        System.out.println("获取两分钟前的时间-> " + localDateTime3);
        //获取两月前的时间
        LocalDateTime localDateTime4 = localDateTime.minusMonths(2);
        System.out.println("获取两月前的时间-> " + localDateTime4);
        //获取两纳秒前的时间
        LocalDateTime localDateTime5 = localDateTime.minusNanos(2);
        System.out.println("获取两纳秒前的时间-> " + localDateTime5);
        //获取两秒前的时间
        LocalDateTime localDateTime6 = localDateTime.minusSeconds(2);
        System.out.println("获取两秒前的时间-> " + localDateTime6);
        //获取两周前的时间
        LocalDateTime localDateTime7 = localDateTime.minusWeeks(2);
        System.out.println("获取两周前的时间-> " + localDateTime7);
        //获取两年前的时间
        LocalDateTime localDateTime8 = localDateTime.minusYears(2);
        System.out.println("获取两年前的时间-> " + localDateTime8);
    }
    // 输出结果
    // 当前时间为-> 2023-12-15T13:58:26.434874200
    // 获取两天前的时间-> 2023-12-13T13:58:26.434874200
    // 获取两小时前的时间-> 2023-12-15T11:58:26.434874200
    // 获取两分钟前的时间-> 2023-12-15T13:56:26.434874200
    // 获取两月前的时间-> 2023-10-15T13:58:26.434874200
    // 获取两纳秒前的时间-> 2023-12-15T13:58:26.434874198
    // 获取两秒前的时间-> 2023-12-15T13:58:24.434874200
    // 获取两周前的时间-> 2023-12-01T13:58:26.434874200
    // 获取两年前的时间-> 2021-12-15T13:58:26.434874200

? ? ? ? 8:比较两个时间

?????????????????????????

    @Test
    void contextLoads() {
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println("当前时间为-> " + localDateTime);
        LocalDateTime localDateTimePlus = localDateTime.plusHours(1);
        LocalDateTime localDateTimeMinus = localDateTimePlus.minusHours(1);
        int i = localDateTime.compareTo(localDateTime);
        System.out.println("与自己比较的结果-> " + i);
        int i1 = localDateTime.compareTo(localDateTimePlus);
        System.out.println("与之后一小时时间比较的结果-> " + i1);
        int i2 = localDateTime.compareTo(localDateTimeMinus);
        System.out.println("与之前一小时时间比较的结果-> " + i2);
    }
    // 输出结果
    // 当前时间为-> 2023-12-15T14:04:32.157731400
    // 与自己比较的结果-> 0
    // 与之后一小时时间比较的结果-> -1
    // 与之前一小时时间比较的结果-> 0

? ? ? ? 9:获取LocalDateTime的具体信息

????????????????

????????????????

    @Test
    void contextLoads() {
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println("当前时间为-> " + localDateTime);
        int dayOfMonth = localDateTime.getDayOfMonth();
        System.out.println("dayOfMonth -> " + dayOfMonth);
        DayOfWeek dayOfWeek = localDateTime.getDayOfWeek();
        System.out.println("dayOfWeek -> " + dayOfWeek);
        int dayOfYear = localDateTime.getDayOfYear();
        System.out.println("dayOfYear -> " + dayOfYear);
        int hour = localDateTime.getHour();
        System.out.println("hour -> " + hour);
        int year = localDateTime.getYear();
        System.out.println("year -> " + year);
        Month month = localDateTime.getMonth();
        System.out.println("month -> " + month);
    }
    // 输出结果
    // dayOfMonth -> 15
    // dayOfWeek -> FRIDAY
    // dayOfYear -> 349
    // hour -> 14
    // year -> 2023
    // month -> DECEMBER

目前只用到了一部分,剩余方法可查看jdk文档火球

文章来源:https://blog.csdn.net/weixin_49990593/article/details/135011407
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。