LocalDateTime工具类

102 阅读1分钟

时间日期工具类 LoaclDateTime

public class DateUtils {

    /**
     * 日期范围
     *
     * @param startDate 开始日期
     * @param endDate   结束日期
     * @return {@code Stream<LocalDate>}
     */
    public static Stream<LocalDate> datesRange(LocalDate startDate, LocalDate endDate) {
        Predicate<LocalDate> dateInRange = d -> !d.isBefore(startDate) && !d.isAfter(endDate);
        long numOfDaysBetween = ChronoUnit.DAYS.between(startDate, endDate);
        return Stream.iterate(startDate, date -> date.plusDays(1))
                .limit(numOfDaysBetween + 1)
                .filter(dateInRange);
    }

    /**
     * 获取时间间隔
     *
     * @param first  第一个
     * @param second 第二个
     * @return long
     */
    public static long getBetween(LocalDate first,LocalDate second){
        return second.until(first,ChronoUnit.DAYS) == 0 ? 1 : second.until(first,ChronoUnit.DAYS);
    }
    /**
     * 根据时间间隔 获取 前几天
     *
     * @param localDate 当地日期
     * @param between   之间
     * @return {@code LocalDate}
     */
    public static LocalDate getLastDays(LocalDate localDate,long between){
        return localDate.plusDays(between);
    }

    /**
     * 上个月的今天
     * 如果为31 则变为上个月最后一天
     *
     * @param localDate 当地日期
     * @return {@code LocalDate}
     */
    public static LocalDate getLastMonth(LocalDate localDate){
        return localDate.minus(1, ChronoUnit.MONTHS);
    }

    /**
     * 上个月的今天
     * 如果为31 则变为上个月最后一天
     *
     * @param localDate 当地日期
     * @return {@code LocalDate}
     */
    public static LocalDate getLastYear(LocalDate localDate){
        return localDate.minus(1, ChronoUnit.YEARS);
    }

    /**
     * 得到月第一天
     *
     * @param date 日期
     * @return {@code LocalDate}
     */
    public static LocalDate getMonthFirstDay(LocalDate date) {
        return date.with(TemporalAdjusters.firstDayOfMonth());
    }

    /**
     * 获得一年第一天
     *
     * @param date 日期
     * @return {@code LocalDate}
     */
    public static LocalDate getYearFirstDay(LocalDate date) {
        return date.with(TemporalAdjusters.firstDayOfYear());
    }

    /**
     * 获得一年最后一天
     *
     * @param date 日期
     * @return {@code LocalDate}
     */
    public static LocalDate getYearLastDay(LocalDate date){
        return date.with(TemporalAdjusters.lastDayOfYear());
    }

    /**
     * 得到月最后一天
     *
     * @param date 日期
     * @return {@code LocalDate}
     */
    public static LocalDate getMonthLastDay(LocalDate date){
        return date.with(TemporalAdjusters.lastDayOfMonth());
    }

    /**
     * 获取当前年总天数
     *
     * @param date 日期
     * @return int
     */
    public static int getCountNowDay(LocalDate date){
        return date.lengthOfYear();
    }

}