| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471 |
- package com.ydtech.modules.inv.utils;
- /**
- * @author jianlong
- * @date 2024-01-24 18:26
- */
- import java.time.*;
- import java.time.format.DateTimeFormatter;
- 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());
- }
- /**
- * 获取12月前第一天
- */
- public static LocalDateTime get12MonthsBefore() {
- return LocalDateTime.now().minusMonths(11).with(TemporalAdjusters.firstDayOfMonth())
- .withHour(0)
- .withMinute(0)
- .withSecond(0)
- .withNano(0);
- }
- /**
- * 获取当前月最后一天
- */
- public static LocalDateTime getTodayLastDay() {
- return LocalDateTime.now().with(TemporalAdjusters.lastDayOfMonth()).withHour(0)
- .withMinute(0)
- .withSecond(0)
- .withNano(0);
- }
- /**
- * 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);
- }
- }
|