Java 日期工具类

Java 日期工具类

  • Date 与 LocalDateTime 互转
  • Date 与 LocalDate 互转
  • 获取 Date 的当天开始时间
  • 获取 Date 的当天结束时间
  • 获取date所属月份第一天
  • 获取date所属月份最后一天
  • 获取两个日期之间所有日期集合
  • date加上days后的日期

Date 与 LocalDateTime 互转

    /**
     * LocalDateTime 转 Date
     *
     * @param localDateTime
     * @return
     */
    public static Date convertLocalDateTimeToDate(LocalDateTime localDateTime) {
        ZoneId zoneId = ZoneId.systemDefault();
        Instant instant = localDateTime.atZone(zoneId).toInstant();
        return Date.from(instant);
    }
    
    /**
     * Date 转 LocalDateTime
     *
     * @param date
     * @return
     */
    public static LocalDateTime convertToLocalDateTime(Date date) {
        Instant instant = date.toInstant();
        ZoneId zoneId = ZoneId.systemDefault();
        return LocalDateTime.ofInstant(instant, zoneId);
    }

Date 与 LocalDate 互转

    /**
     * LocalDate 转 Date
     *
     * @param localDate
     * @return
     */
    public static Date convertLocalDateToDate(LocalDate localDate) {
        ZoneId zoneId = ZoneId.systemDefault();
        Instant instant = localDate.atStartOfDay().atZone(zoneId).toInstant();
        return Date.from(instant);
    }
    
    /**
     * LocalDate&LocalTime 转 Date
     *
     * @param localDate
     * @param localTime
     * @return
     */
    public static Date convertLocalTimeToDate(LocalDate localDate, LocalTime localTime) {
        ZoneId zoneId = ZoneId.systemDefault();
        LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime);
        Instant instant = localDateTime.atZone(zoneId).toInstant();
        return Date.from(instant);
    }

获取 Date 的当天开始时间

    /**
     * 获取date当天的开始日期
     *
     * @param date
     * @return
     */
    public static Date getFirstTimeOfDay(Date date) {
        LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
        return Date.from(LocalDateTime.of(localDateTime.toLocalDate(), LocalTime.MIN).atZone(ZoneId.systemDefault()).toInstant());
    }

获取 Date 的当天结束时间


    /**
     * 获取date当天的最后时间
     *
     * @param date
     * @return
     */
    public static Date getEndTimeOfDay(Date date) {
        LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
        return Date.from(LocalDateTime.of(localDateTime.toLocalDate(), LocalTime.MAX).atZone(ZoneId.systemDefault()).toInstant());
    }

获取date所属月份第一天

    /**
     * 获取date所属月份第一天
     *
     * @param date
     * @return
     */
    public static Date getFirstDayOfMonth(Date date) {
        LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
        ZonedDateTime zonedDateTime = LocalDateTime.of(localDateTime.toLocalDate(), LocalTime.MIN).with(TemporalAdjusters.firstDayOfMonth()).atZone(ZoneId.systemDefault());
        return Date.from(zonedDateTime.toInstant());
    }

获取date所属月份最后一天

    /**
     * 获取date所属月份最后一天
     *
     * @param date
     * @return
     */
    public static Date getEndDayOfMonth(Date date) {
        LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
        ZonedDateTime zonedDateTime = LocalDateTime.of(localDateTime.toLocalDate(), LocalTime.MAX).with(TemporalAdjusters.lastDayOfMonth()).atZone(ZoneId.systemDefault());
        return Date.from(zonedDateTime.toInstant());
    }

获取两个日期之间所有日期集合

    /**
     * 获取两个日期之间所有日期集合
     *
     * @param startDate
     * @param endDate
     * @return
     */
    public static List getDatesBetween(Date startDate, Date endDate) {
        LocalDate localStartDate = convertToLocalDate(startDate);
        LocalDate localEndDate = convertToLocalDate(endDate);
        long numOfDaysBetween = ChronoUnit.DAYS.between(localStartDate, localEndDate) + 1;
        return IntStream.iterate(0, i -> i + 1).limit(numOfDaysBetween).mapToObj(i -> localStartDate.plusDays(i)).collect(Collectors.toList());
    }

date加上days后的日期

    /**
     * date加上days后的日期
     *
     * @param date
     * @return date加上days后的日期
     */
    public static Date plusDays(Date date, int days) {
        LocalDate localDate = convertToLocalDate(date);
        return convertLocalDateToDate(localDate.plusDays(days));
    }

你可能感兴趣的:(工具类)