美文网首页
Java 8 新的日期和时间API_2

Java 8 新的日期和时间API_2

作者: 秋风落叶黄 | 来源:发表于2020-06-24 11:37 被阅读0次

    上篇文章简单介绍了Java8时间日期的基本使用,以及应用场景。这篇文章重点介绍,实际项目中使用到的Java 8时间日期。

    Date类型转换为LocalDateTime

      LocalDateTime startTime = LocalDateTime.ofInstant(new Date().toInstant(), ZoneId.systemDefault());
    

    转换的时候需要用到时区ZoneID, 它根据一定的规则将Instant转换成一个LocalDateTime。

    下面是一个实际使用案例:

    LocalDateTime startTime = LocalDateTime.ofInstant(assignOnlineRoomRequest.getStartTime().toInstant(), ZoneId.systemDefault());
    LocalDateTime endTime = LocalDateTime.ofInstant(assignOnlineRoomRequest.getEndTime().toInstant(), ZoneId.systemDefault());
    
    Preconditions.checkArgument(startTime.getHour() >= 8, "会议开始时间不能早于8点");
    Preconditions.checkArgument(startTime.getHour() <= 20, "会议开始时间不能晚于20点");
    Preconditions.checkArgument(startTime.toLocalDate().equals(endTime.toLocalDate()), "会议开始时间和结束时间必须是同一天");
    Preconditions.checkArgument(endTime.isAfter(startTime), "会议结束时间必须在开始时间之后");
    Preconditions.checkArgument(LocalDateTime.now().isBefore(endTime), "会议结束时间必须晚于当前时间");
    

    LocalDateTime格式化

    LocalDateTime格式化为:yyyy-MM-dd HH:mm:ss

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    formatter.format(LocalDateTime.now())
    

    LocalDateTime的日期时间操作

    LocalDateTime localDateTime = LocalDateTime.of(2020, Month.JULY, 1, 8, 0, 0);
    
    //随机往后偏移一个时间
    LocalDateTime startTime =localDateTime.plusDays(RandomUtils.nextInt(1, 30)).plusHours(RandomUtils.nextInt(0, 12)).plusMinutes(RandomUtils.nextInt(0, 60)).plusSeconds(RandomUtils.nextInt(0, 60));
    
    LocalDateTime endTime = startTime.plusMinutes(RandomUtils.nextInt(60, 180));
    

    LocalDateTime转换为Date类型

    LocalDateTime now = LocalDateTime.now();
    Instant instant = now.atZone(ZoneId.systemDefault()).toInstant();
    Date date = Date.from(instant);
    

    UTC时区字符串转换为当前时区时间

    ZonedDateTime parse = ZonedDateTime.parse("2011-12-03T10:15:30Z").withZoneSameInstant(ZoneId.systemDefault());
    LocalDateTime localDateTime = parse.toLocalDateTime();
    System.out.println(localDateTime);
    

    未完待续...

    相关文章

      网友评论

          本文标题:Java 8 新的日期和时间API_2

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