|
|
@@ -1,11 +1,13 @@
|
|
|
package com.sckw.core.utils;
|
|
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
+import com.sckw.core.exception.BusinessException;
|
|
|
|
|
|
import java.text.DateFormat;
|
|
|
import java.text.ParseException;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.time.*;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
import java.util.Calendar;
|
|
|
import java.util.Date;
|
|
|
import java.util.Objects;
|
|
|
@@ -607,7 +609,7 @@ public class DateUtils extends DateUtil {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * @desc: 获取指定时间的周/月开始时间
|
|
|
+ * @desc: 获取指定时间的1日/2周/3月/4年开始时间
|
|
|
* @author: yzc
|
|
|
* @date: 2023-09-12 10:20
|
|
|
* @Param dateType:
|
|
|
@@ -617,15 +619,19 @@ public class DateUtils extends DateUtil {
|
|
|
public static Date getStartTime(Integer dateType, LocalDateTime time) {
|
|
|
LocalDateTime startTime;
|
|
|
if (Objects.equals(dateType, 1)) {
|
|
|
+ startTime = LocalDateTime.of(time.toLocalDate(), LocalTime.MIN);
|
|
|
+ } else if (Objects.equals(dateType, 2)) {
|
|
|
startTime = LocalDateTime.of(time.toLocalDate().minusDays(6), LocalTime.MIN);
|
|
|
- } else {
|
|
|
+ } else if (Objects.equals(dateType, 3)) {
|
|
|
startTime = LocalDateTime.of(time.toLocalDate().minusMonths(1).plusDays(1), LocalTime.MIN);
|
|
|
+ } else {
|
|
|
+ startTime = LocalDateTime.of(time.toLocalDate().minusYears(1).plusDays(1), LocalTime.MIN);
|
|
|
}
|
|
|
return formatDate(startTime);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * @desc: 获取上周/月结束时间
|
|
|
+ * @desc: 获取上1日/2周/3月/4年结束时间
|
|
|
* @author: yzc
|
|
|
* @date: 2023-09-12 10:21
|
|
|
* @Param dateType:
|
|
|
@@ -634,13 +640,49 @@ public class DateUtils extends DateUtil {
|
|
|
public static Date getLastEndTime(Integer dateType) {
|
|
|
LocalDateTime endTime;
|
|
|
if (Objects.equals(dateType, 1)) {
|
|
|
+ endTime = LocalDateTime.of(LocalDate.now().minusDays(1), LocalTime.MAX);
|
|
|
+ } else if (Objects.equals(dateType, 2)) {
|
|
|
endTime = LocalDateTime.of(LocalDate.now().minusDays(7), LocalTime.MAX);
|
|
|
- } else {
|
|
|
+ } else if (Objects.equals(dateType, 3)) {
|
|
|
endTime = LocalDateTime.of(LocalDate.now().minusMonths(1), LocalTime.MAX);
|
|
|
+ } else {
|
|
|
+ endTime = LocalDateTime.of(LocalDate.now().minusYears(1), LocalTime.MAX);
|
|
|
}
|
|
|
return formatDate(endTime);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * @desc: 获取当前时间倒推一年开始时间
|
|
|
+ * @author: yzc
|
|
|
+ * @date: 2023-09-13 10:29
|
|
|
+ * @return: java.util.Date
|
|
|
+ */
|
|
|
+ public static Date getYearStartTime() {
|
|
|
+ //当前时间减去11个月
|
|
|
+ LocalDate localDate = LocalDate.now().minusMonths(11);
|
|
|
+ //获取localDate当月第一天
|
|
|
+ LocalDate date = LocalDate.of(localDate.getYear(), localDate.getMonth(), 1);
|
|
|
+ return formatDate(date.atStartOfDay());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @desc: 获取日期转换格式
|
|
|
+ * @author: yzc
|
|
|
+ * @date: 2023-09-13 9:32
|
|
|
+ * @Param dateType: 1日/3月/4年
|
|
|
+ * @return: java.lang.String
|
|
|
+ */
|
|
|
+ public static String getDateFormat(Integer dateType) {
|
|
|
+ String dateFormat;
|
|
|
+ switch (dateType) {
|
|
|
+ case 1 -> dateFormat = "%Y-%m-%d";
|
|
|
+ case 3 -> dateFormat = "%Y-%m";
|
|
|
+ case 4 -> dateFormat = "%Y";
|
|
|
+ default -> throw new BusinessException("Invalid dateType");
|
|
|
+ }
|
|
|
+ return dateFormat;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* @desc: LocalDateTime转换为Date
|
|
|
* @author: yzc
|
|
|
@@ -651,4 +693,28 @@ public class DateUtils extends DateUtil {
|
|
|
public static Date formatDate(LocalDateTime time) {
|
|
|
return Date.from(time.atZone(ZoneId.systemDefault()).toInstant());
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @desc: date转换为LocalDate
|
|
|
+ * @author: yzc
|
|
|
+ * @date: 2023-09-13 15:14
|
|
|
+ * @Param date:
|
|
|
+ * @return: java.time.LocalDate
|
|
|
+ */
|
|
|
+ public static LocalDate dateToLocalDate(Date date) {
|
|
|
+ return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @desc: localDate转换为String
|
|
|
+ * @author: yzc
|
|
|
+ * @date: 2023-09-13 15:21
|
|
|
+ * @Param date:
|
|
|
+ * @Param pattern:
|
|
|
+ * @return: java.lang.String
|
|
|
+ */
|
|
|
+ public static String localDateToString(LocalDate date, String pattern) {
|
|
|
+ DateTimeFormatter fmt = DateTimeFormatter.ofPattern(pattern);
|
|
|
+ return date.format(fmt);
|
|
|
+ }
|
|
|
}
|