LocalDateTime工具类:根据当前、周、月、季度、半年、年等维度获取时间

1. 简介

  Java8提供了全新的日期处理包(java.time.),根据Java8日期新特性封装日期时间工具类*LocalDateTimeUtils**。

2. 相关博客

  Java 8 新特性:日期处理

3. 工具类方法目录
说明 方法名称
当前时间 LocalDateTimeUtils.now()
Date 转 LocalDateTime LocalDateTimeUtils.convert(new Date()));
LocalDateTime 转 Date LocalDateTimeUtils.convert(LocalDateTime.now()));
今天开始时间 LocalDateTimeUtils.todayStartTime()
今天结束时间 LocalDateTimeUtils.todayEndTime()
昨天开始时间 LocalDateTimeUtils.yesterdayStartTime()
昨天结束时间 LocalDateTimeUtils.yesterdayEndTime()
最近7天开始时间 LocalDateTimeUtils.last7DaysStartTime()
最近7天结束时间 LocalDateTimeUtils.last7DaysEndTime()
最近30天开始时间 LocalDateTimeUtils.last30DaysStartTime()
最近30天天结束时间 LocalDateTimeUtils.last30DaysEndTime()
最近一年开始时间 LocalDateTimeUtils.last1YearStartTime()
最近一年结束时间 LocalDateTimeUtils.last1YearEndTime()
本周开始时间 LocalDateTimeUtils.weekStartTime()
本周结束时间 LocalDateTimeUtils.weekEndTime()
本月开始时间 LocalDateTimeUtils.monthStartTime()
本月结束时间 LocalDateTimeUtils.monthEndTime()
本季度开始时间 LocalDateTimeUtils.quarterStartTime()
本季度结束时间 LocalDateTimeUtils.quarterEndTime()
本半年开始时间 LocalDateTimeUtils.halfYearStartTime()
本半年结束时间 LocalDateTimeUtils.halfYearEndTime()
本年开始时间 LocalDateTimeUtils.yearStartTime()
本年结束时间 LocalDateTimeUtils.yearEndTime()
上周开始时间 LocalDateTimeUtils.lastWeekStartTime()
上周结束时间 LocalDateTimeUtils.lastWeekEndTime()
上月开始时间 LocalDateTimeUtils.lastMonthStartTime()
上月结束时间 LocalDateTimeUtils.lastMonthEndTime()
上季度开始时间 LocalDateTimeUtils.lastQuarterStartTime()
上季度结束时间 LocalDateTimeUtils.lastQuarterEndTime()
上半年开始时间 LocalDateTimeUtils.lastHalfYearStartTime()
上半年结束时间 LocalDateTimeUtils.lastHalfYearEndTime()
上一年开始时间 LocalDateTimeUtils.lastYearStartTime()
上一年结束时间 LocalDateTimeUtils.lastYearEndTime()
下周开始时间 LocalDateTimeUtils.nextWeekStartTime()
下周结束时间 LocalDateTimeUtils.nextWeekEndTime()
下月开始时间 LocalDateTimeUtils.nextMonthStartTime()
下月结束时间 LocalDateTimeUtils.nextMonthEndTime()
下季度开始时间 LocalDateTimeUtils.nextQuarterStartTime()
下季度结束时间 LocalDateTimeUtils.nextQuarterEndTime()
下半年开始时间 LocalDateTimeUtils.nextHalfYearStartTime()
下半年结束时间 LocalDateTimeUtils.nextHalfYearEndTime()
下一年开始时间 LocalDateTimeUtils.nextYearStartTime()
下一年结束时间 LocalDateTimeUtils.nextYearEndTime()

import java.time.*;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAdjusters;
import java.util.Date;

/**
 * LocalDateTime工具类
 *
 * @author CL
 */
public class LocalDateTimeUtils {

    /**
     * 当前时间
     *
     * @return
     */
    public static LocalDateTime now() {
        return LocalDateTime.now();
    }

    /**
     * Date 转 LocalDateTime
     *
     * @return
     */
    public static LocalDateTime convert(Date date) {
        return LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), ZoneId.systemDefault());
    }

    /**
     * LocalDateTime 转 Date
     *
     * @return
     */
    public static Date convert(LocalDateTime localDateTime) {
        return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
    }

    /**
     * 今天开始时间
     *
     * @return
     */
    public static LocalDateTime todayStartTime() {
        return LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
    }

    /**
     * 今天结束时间
     *
     * @return
     */
    public static LocalDateTime todayEndTime() {
        return LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
    }

    /**
     * 昨天开始时间
     *
     * @return
     */
    public static LocalDateTime yesterdayStartTime() {
        return LocalDateTime.of(LocalDate.now().minus(1L, ChronoUnit.DAYS), LocalTime.MIN);
    }

    /**
     * 昨天结束时间
     *
     * @return
     */
    public static LocalDateTime yesterdayEndTime() {
        return LocalDateTime.of(LocalDate.now().minus(1L, ChronoUnit.DAYS), LocalTime.MAX);
    }

    /**
     * 最近7天开始时间
     *
     * @return
     */
    public static LocalDateTime last7DaysStartTime() {
        return LocalDateTime.of(LocalDate.now().minus(6L, ChronoUnit.DAYS), LocalTime.MIN);
    }

    /**
     * 最近7天结束时间
     *
     * @return
     */
    public static LocalDateTime last7DaysEndTime() {
        return LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
    }

    /**
     * 最近30天开始时间
     *
     * @return
     */
    public static LocalDateTime last30DaysStartTime() {
        return LocalDateTime.of(LocalDate.now().minus(29L, ChronoUnit.DAYS), LocalTime.MIN);
    }

    /**
     * 最近30天结束时间
     *
     * @return
     */
    public static LocalDateTime last30DaysEndTime() {
        return LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
    }

    /**
     * 最近一年开始时间
     *
     * @return
     */
    public static LocalDateTime last1YearStartTime() {
        return LocalDateTime.of(LocalDate.now().minus(1L, ChronoUnit.YEARS).plus(1L, ChronoUnit.DAYS), LocalTime.MIN);
    }

    /**
     * 最近一年结束时间
     *
     * @return
     */
    public static LocalDateTime last1YearEndTime() {
        return LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
    }

    /**
     * 本周开始时间
     *
     * @return
     */
    public static LocalDateTime weekStartTime() {
        LocalDate now = LocalDate.now();
        return LocalDateTime.of(now.minusDays(now.getDayOfWeek().getValue() - 1), LocalTime.MIN);
    }

    /**
     * 本周结束时间
     *
     * @return
     */
    public static LocalDateTime weekEndTime() {
        LocalDate now = LocalDate.now();
        return LocalDateTime.of(now.plusDays(7 - now.getDayOfWeek().getValue()), LocalTime.MAX);
    }

    /**
     * 本月开始时间
     *
     * @return
     */
    public static LocalDateTime monthStartTime() {
        return LocalDateTime.of(LocalDate.now().with(TemporalAdjusters.firstDayOfMonth()), LocalTime.MIN);
    }

    /**
     * 本月结束时间
     *
     * @return
     */
    public static LocalDateTime monthEndTime() {
        return LocalDateTime.of(LocalDate.now().with(TemporalAdjusters.lastDayOfMonth()), LocalTime.MAX);
    }

    /**
     * 本季度开始时间
     *
     * @return
     */
    public static LocalDateTime quarterStartTime() {
        LocalDate now = LocalDate.now();
        Month month = Month.of(now.getMonth().firstMonthOfQuarter().getValue());
        return LocalDateTime.of(LocalDate.of(now.getYear(), month, 1), LocalTime.MIN);
    }

    /**
     * 本季度结束时间
     *
     * @return
     */
    public static LocalDateTime quarterEndTime() {
        LocalDate now = LocalDate.now();
        Month month = Month.of(now.getMonth().firstMonthOfQuarter().getValue()).plus(2L);
        return LocalDateTime.of(LocalDate.of(now.getYear(), month, month.length(now.isLeapYear())), LocalTime.MAX);
    }

    /**
     * 本半年开始时间
     *
     * @return
     */
    public static LocalDateTime halfYearStartTime() {
        LocalDate now = LocalDate.now();
        Month month = (now.getMonthValue() > 6) ? Month.JULY : Month.JANUARY;
        return LocalDateTime.of(LocalDate.of(now.getYear(), month, 1), LocalTime.MIN);
    }

    /**
     * 本半年结束时间
     *
     * @return
     */
    public static LocalDateTime halfYearEndTime() {
        LocalDate now = LocalDate.now();
        Month month = (now.getMonthValue() > 6) ? Month.DECEMBER : Month.JUNE;
        return LocalDateTime.of(LocalDate.of(now.getYear(), month, month.length(now.isLeapYear())), LocalTime.MAX);
    }

    /**
     * 本年开始时间
     *
     * @return
     */
    public static LocalDateTime yearStartTime() {
        return LocalDateTime.of(LocalDate.now().with(TemporalAdjusters.firstDayOfYear()), LocalTime.MIN);
    }

    /**
     * 本年结束时间
     *
     * @return
     */
    public static LocalDateTime yearEndTime() {
        return LocalDateTime.of(LocalDate.now().with(TemporalAdjusters.lastDayOfYear()), LocalTime.MAX);
    }

    /**
     * 上周开始时间
     *
     * @return
     */
    public static LocalDateTime lastWeekStartTime() {
        LocalDate lastWeek = LocalDate.now().minus(1L, ChronoUnit.WEEKS);
        return LocalDateTime.of(lastWeek.minusDays(lastWeek.getDayOfWeek().getValue() - 1), LocalTime.MIN);
    }

    /**
     * 上周结束时间
     *
     * @return
     */
    public static LocalDateTime lastWeekEndTime() {
        LocalDate lastWeek = LocalDate.now().minus(1L, ChronoUnit.WEEKS);
        return LocalDateTime.of(lastWeek.plusDays(7 - lastWeek.getDayOfWeek().getValue()), LocalTime.MAX);
    }

    /**
     * 上月开始时间
     *
     * @return
     */
    public static LocalDateTime lastMonthStartTime() {
        return LocalDateTime.of(LocalDate.now().minus(1L, ChronoUnit.MONTHS).with(TemporalAdjusters.firstDayOfMonth()), LocalTime.MIN);
    }

    /**
     * 上月结束时间
     *
     * @return
     */
    public static LocalDateTime lastMonthEndTime() {
        return LocalDateTime.of(LocalDate.now().minus(1L, ChronoUnit.MONTHS).with(TemporalAdjusters.lastDayOfMonth()), LocalTime.MAX);
    }

    /**
     * 上季度开始时间
     *
     * @return
     */
    public static LocalDateTime lastQuarterStartTime() {
        LocalDate now = LocalDate.now();
        Month firstMonthOfQuarter = Month.of(now.getMonth().firstMonthOfQuarter().getValue());
        Month firstMonthOfLastQuarter = firstMonthOfQuarter.minus(3L);
        int yearOfLastQuarter = firstMonthOfQuarter.getValue() < 4 ? now.getYear() - 1 : now.getYear();
        return LocalDateTime.of(LocalDate.of(yearOfLastQuarter, firstMonthOfLastQuarter, 1), LocalTime.MIN);
    }

    /**
     * 上季度结束时间
     *
     * @return
     */
    public static LocalDateTime lastQuarterEndTime() {
        LocalDate now = LocalDate.now();
        Month firstMonthOfQuarter = Month.of(now.getMonth().firstMonthOfQuarter().getValue());
        Month firstMonthOfLastQuarter = firstMonthOfQuarter.minus(1L);
        int yearOfLastQuarter = firstMonthOfQuarter.getValue() < 4 ? now.getYear() - 1 : now.getYear();
        return LocalDateTime.of(LocalDate.of(yearOfLastQuarter, firstMonthOfLastQuarter, firstMonthOfLastQuarter.maxLength()), LocalTime.MAX);
    }

    /**
     * 上半年开始时间
     *
     * @return
     */
    public static LocalDateTime lastHalfYearStartTime() {
        LocalDate now = LocalDate.now();
        int lastHalfYear = (now.getMonthValue() > 6) ? now.getYear() : now.getYear() - 1;
        Month firstMonthOfLastHalfYear = (now.getMonthValue() > 6) ? Month.JANUARY : Month.JULY;
        return LocalDateTime.of(LocalDate.of(lastHalfYear, firstMonthOfLastHalfYear, 1), LocalTime.MIN);
    }

    /**
     * 上半年结束时间
     *
     * @return
     */
    public static LocalDateTime lastHalfYearEndTime() {
        LocalDate now = LocalDate.now();
        int lastHalfYear = (now.getMonthValue() > 6) ? now.getYear() : now.getYear() - 1;
        Month lastMonthOfLastHalfYear = (now.getMonthValue() > 6) ? Month.JUNE : Month.DECEMBER;
        return LocalDateTime.of(LocalDate.of(lastHalfYear, lastMonthOfLastHalfYear, lastMonthOfLastHalfYear.maxLength()), LocalTime.MAX);
    }

    /**
     * 上一年开始时间
     *
     * @return
     */
    public static LocalDateTime lastYearStartTime() {
        return LocalDateTime.of(LocalDate.now().minus(1L, ChronoUnit.YEARS).with(TemporalAdjusters.firstDayOfYear()), LocalTime.MIN);
    }

    /**
     * 上一年结束时间
     *
     * @return
     */
    public static LocalDateTime lastYearEndTime() {
        return LocalDateTime.of(LocalDate.now().minus(1L, ChronoUnit.YEARS).with(TemporalAdjusters.lastDayOfYear()), LocalTime.MAX);
    }

    /**
     * 下周开始时间
     *
     * @return
     */
    public static LocalDateTime nextWeekStartTime() {
        LocalDate nextWeek = LocalDate.now().plus(1L, ChronoUnit.WEEKS);
        return LocalDateTime.of(nextWeek.minusDays(nextWeek.getDayOfWeek().getValue() - 1), LocalTime.MIN);
    }

    /**
     * 下周结束时间
     *
     * @return
     */
    public static LocalDateTime nextWeekEndTime() {
        LocalDate nextWeek = LocalDate.now().plus(1L, ChronoUnit.WEEKS);
        return LocalDateTime.of(nextWeek.plusDays(7 - nextWeek.getDayOfWeek().getValue()), LocalTime.MAX);
    }

    /**
     * 下月开始时间
     *
     * @return
     */
    public static LocalDateTime nextMonthStartTime() {
        return LocalDateTime.of(LocalDate.now().plus(1L, ChronoUnit.MONTHS).with(TemporalAdjusters.firstDayOfMonth()), LocalTime.MIN);
    }

    /**
     * 下月结束时间
     *
     * @return
     */
    public static LocalDateTime nextMonthEndTime() {
        return LocalDateTime.of(LocalDate.now().plus(1L, ChronoUnit.MONTHS).with(TemporalAdjusters.lastDayOfMonth()), LocalTime.MAX);
    }

    /**
     * 下季度开始时间
     *
     * @return
     */
    public static LocalDateTime nextQuarterStartTime() {
        LocalDate now = LocalDate.now();
        Month firstMonthOfQuarter = Month.of(now.getMonth().firstMonthOfQuarter().getValue());
        Month firstMonthOfNextQuarter = firstMonthOfQuarter.plus(3L);
        int yearOfNextQuarter = firstMonthOfQuarter.getValue() > 9 ? now.getYear() + 1 : now.getYear();
        return LocalDateTime.of(LocalDate.of(yearOfNextQuarter, firstMonthOfNextQuarter, 1), LocalTime.MIN);
    }

    /**
     * 下季度结束时间
     *
     * @return
     */
    public static LocalDateTime nextQuarterEndTime() {
        LocalDate now = LocalDate.now();
        Month firstMonthOfQuarter = Month.of(now.getMonth().firstMonthOfQuarter().getValue());
        Month firstMonthOfNextQuarter = firstMonthOfQuarter.plus(5L);
        int yearOfNextQuarter = firstMonthOfQuarter.getValue() > 9 ? now.getYear() + 1 : now.getYear();
        return LocalDateTime.of(LocalDate.of(yearOfNextQuarter, firstMonthOfNextQuarter, firstMonthOfNextQuarter.maxLength()), LocalTime.MAX);
    }

    /**
     * 上半年开始时间
     *
     * @return
     */
    public static LocalDateTime nextHalfYearStartTime() {
        LocalDate now = LocalDate.now();
        int nextHalfYear = (now.getMonthValue() > 6) ? now.getYear() + 1 : now.getYear();
        Month firstMonthOfNextHalfYear = (now.getMonthValue() > 6) ? Month.JANUARY : Month.JULY;
        return LocalDateTime.of(LocalDate.of(nextHalfYear, firstMonthOfNextHalfYear, 1), LocalTime.MIN);
    }

    /**
     * 上半年结束时间
     *
     * @return
     */
    public static LocalDateTime nextHalfYearEndTime() {
        LocalDate now = LocalDate.now();
        int lastHalfYear = (now.getMonthValue() > 6) ? now.getYear() + 1 : now.getYear();
        Month lastMonthOfNextHalfYear = (now.getMonthValue() > 6) ? Month.JUNE : Month.DECEMBER;
        return LocalDateTime.of(LocalDate.of(lastHalfYear, lastMonthOfNextHalfYear, lastMonthOfNextHalfYear.maxLength()), LocalTime.MAX);
    }

    /**
     * 下一年开始时间
     *
     * @return
     */
    public static LocalDateTime nextYearStartTime() {
        return LocalDateTime.of(LocalDate.now().plus(1L, ChronoUnit.YEARS).with(TemporalAdjusters.firstDayOfYear()), LocalTime.MIN);
    }

    /**
     * 下一年结束时间
     *
     * @return
     */
    public static LocalDateTime nextYearEndTime() {
        return LocalDateTime.of(LocalDate.now().plus(1L, ChronoUnit.YEARS).with(TemporalAdjusters.lastDayOfYear()), LocalTime.MAX);
    }

    public static void main(String[] args) {
        System.out.println("当前时间:" + now());
        System.out.println("Date 转 LocalDateTime:" + convert(new Date()));
        System.out.println("LocalDateTime 转 Date:" + convert(LocalDateTime.now()));
        System.out.println("今天开始时间:" + todayStartTime());
        System.out.println("今天结束时间:" + todayEndTime());
        System.out.println("昨天开始时间:" + yesterdayStartTime());
        System.out.println("昨天结束时间:" + yesterdayEndTime());
        System.out.println("最近7天开始时间:" + last7DaysStartTime());
        System.out.println("最近7天结束时间:" + last7DaysEndTime());
        System.out.println("最近30天开始时间:" + last30DaysStartTime());
        System.out.println("最近30天天结束时间:" + last30DaysEndTime());
        System.out.println("最近一年开始时间:" + last1YearStartTime());
        System.out.println("最近一年结束时间:" + last1YearEndTime());
        System.out.println("本周开始时间:" + weekStartTime());
        System.out.println("本周结束时间:" + weekEndTime());
        System.out.println("本月开始时间:" + monthStartTime());
        System.out.println("本月结束时间:" + monthEndTime());
        System.out.println("本季度开始时间:" + quarterStartTime());
        System.out.println("本季度结束时间:" + quarterEndTime());
        System.out.println("本半年开始时间:" + halfYearStartTime());
        System.out.println("本半年结束时间:" + halfYearEndTime());
        System.out.println("本年开始时间:" + yearStartTime());
        System.out.println("本年结束时间:" + yearEndTime());
        System.out.println("上周开始时间:" + lastWeekStartTime());
        System.out.println("上周结束时间:" + lastWeekEndTime());
        System.out.println("上月开始时间:" + lastMonthStartTime());
        System.out.println("上月结束时间:" + lastMonthEndTime());
        System.out.println("上季度开始时间:" + lastQuarterStartTime());
        System.out.println("上季度结束时间:" + lastQuarterEndTime());
        System.out.println("上半年开始时间:" + lastHalfYearStartTime());
        System.out.println("上半年结束时间:" + lastHalfYearEndTime());
        System.out.println("上一年开始时间:" + lastYearStartTime());
        System.out.println("上一年结束时间:" + lastYearEndTime());
        System.out.println("下周开始时间:" + nextWeekStartTime());
        System.out.println("下周结束时间:" + nextWeekEndTime());
        System.out.println("下月开始时间:" + nextMonthStartTime());
        System.out.println("下月结束时间:" + nextMonthEndTime());
        System.out.println("下季度开始时间:" + nextQuarterStartTime());
        System.out.println("下季度结束时间:" + nextQuarterEndTime());
        System.out.println("下半年开始时间:" + nextHalfYearStartTime());
        System.out.println("下半年结束时间:" + nextHalfYearEndTime());
        System.out.println("下一年开始时间:" + nextYearStartTime());
        System.out.println("下一年结束时间:" + nextYearEndTime());
    }

}

LocalDateTime和时间戳互转

LocalDateTime和时间戳互转#

/** * 获取到毫秒级时间戳
* @param localDateTime 具体时间
* @return long 毫秒级时间戳 /
public static long toEpochMilli(LocalDateTime localDateTime){ return localDateTime.toInstant(ZoneOffset.of(“+8”)).toEpochMilli();
} /*
* 毫秒级时间戳转 LocalDateTime
* @param epochMilli 毫秒级时间戳
* @return LocalDateTime /
public static LocalDateTime ofEpochMilli(long epochMilli){ return LocalDateTime.ofInstant(Instant.ofEpochMilli(epochMilli), ZoneOffset.of(“+8”));
} /*
* 获取到秒级时间戳
* @param localDateTime 具体时间
* @return long 秒级时间戳 /
public static long toEpochSecond(LocalDateTime localDateTime){ return localDateTime.toEpochSecond(ZoneOffset.of(“+8”));
} /*
* 秒级时间戳转 LocalDateTime
* @param epochSecond 秒级时间戳
* @return LocalDateTime */
public static LocalDateTime ofEpochSecond(long epochSecond){ return LocalDateTime.ofEpochSecond(epochSecond, 0,ZoneOffset.of(“+8”));
}

LocalDateTime和Date互转#

/** * Date时间类转LocalDateTime
 * @param date Date时间类
 * @return LocalDateTime */
public static LocalDateTime ofDate(Date date){ return date.toInstant().atOffset(ZoneOffset.of("+8")).toLocalDateTime();
} /** * LocalDateTime时间类转 Date时间类
 * @param localDateTime LocalDateTime时间类
 * @return Date时间类 */
public static Date toDate(LocalDateTime localDateTime){ return Date.from(localDateTime.atZone(ZoneOffset.of("+8")).toInstant());
}

LocalDateTime和字符串互转#

/** * LocalDateTime转时间格式字符串
 * @param localDateTime 时间
 * @return string */
public static String formatToString(LocalDateTime localDateTime){
    String format = "yyyy:MM:dd HH:mm:ss";
    DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(format); return localDateTime.format(dateTimeFormatter);
} /** *  时间字符串 转LocalDateTime
 * @param localDateTime  时间字符串
 * @return LocalDateTime */
public static LocalDateTime stringToFormat(String localDateTime){
    String format = "yyyy:MM:dd HH:mm:ss";
    DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(format); return LocalDateTime.parse(localDateTime,dateTimeFormatter);
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
MissYou123
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!