Local快速上手

java中Local时间类型的使用

简单说说

localdateTime是JDK1.8中新加的API,他拥有线程安全等等好处!!!

基本Api的使用

        System.out.println("-----------时间日期类型----------------------");
        LocalDateTime now = LocalDateTime.now();
        log.info("现在:{}",now);
        log.info("现在时间5分钟后:{}",now.plusMinutes(10));
        log.info("现在时间5分钟前:{}",now.minusMinutes(10));
        System.out.println("-----------日期类型----------------------");
        LocalDate date = LocalDate.now();
        log.info("现在日期:{}",date);
        log.info("现在日期+1day:{}",date.plusDays(1));
        System.out.println("-------------时间类型---------------------");
        LocalTime time = LocalTime.now();
        log.info("现在时间:{}",time);
        log.info("现在时间+1min:{}",time.plusMinutes(10));
        System.out.println("------------------相差几天----------------");
        long days = Duration.between(LocalDateTime.now(), LocalDateTime.now().plusDays(1)).toDays();
        log.info("相差:{}",days);
        System.out.println("------------------时间位置统计----------------------");
        System.out.println(now.getDayOfYear());
        System.out.println(now.getDayOfMonth());
        System.out.println(now.getDayOfWeek());
        System.out.println("--------------------时间范围计算---------------------------");
        LocalTime end = LocalTime.of(22, 30);
        LocalTime str = LocalTime.of(8, 30);
        LocalTime play = LocalTime.of(22, 31);
        if (play.isBefore(str)||play.isAfter(end)){
            System.out.println("超出时间");
        }
        System.out.println("-----------------------data与localz转换-------------------------");
        ZoneId zoneId = ZoneId.systemDefault();
        ZonedDateTime zonedDateTime = now.atZone(zoneId);
        Instant instant = zonedDateTime.toInstant();
        Date d = Date.from(instant);
        log.info("lcoal->data:{}",d);

        //Date转换成LocalDateTime
        Date date1 = new Date();
        Instant instant1 = date1.toInstant();
        ZoneId zoneId1 = ZoneId.systemDefault();
        LocalDateTime localDateTime = LocalDateTime.ofInstant(instant1, zoneId1);
        log.info("data ->lcoal:{}",localDateTime);

运行结果

-----------时间日期类型----------------------
17:36:10.126 [main] INFO test - 现在:2023-03-30T17:36:10.126
17:36:10.126 [main] INFO test - 现在时间5分钟后:2023-03-30T17:46:10.126
17:36:10.126 [main] INFO test - 现在时间5分钟前:2023-03-30T17:26:10.126
-----------日期类型----------------------
17:36:10.126 [main] INFO test - 现在日期:2023-03-30
17:36:10.126 [main] INFO test - 现在日期+1day:2023-03-31
-------------时间类型---------------------
17:36:10.126 [main] INFO test - 现在时间:17:36:10.126
17:36:10.126 [main] INFO test - 现在时间+1min:17:46:10.126
------------------相差几天----------------
17:36:10.126 [main] INFO test - 相差:1
------------------时间位置统计----------------------
89
30
THURSDAY
--------------------时间范围计算---------------------------
超出时间
-----------------------data与localz转换-------------------------
17:36:10.126 [main] INFO test - lcoal->data:Thu Mar 30 17:36:10 CST 2023
17:36:10.126 [main] INFO test - data ->lcoal:2023-03-30T17:36:10.126

前端与后端时间格式的数据

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
    private LocalDateTime createTime;

DateTimeFormat主要是用于前端给后端传递值的时候使用,如果是字段是在请求体中,则失效!!!
JsonFormat可以前端传时间时使用,也可以是后端传给前端时使用