wfansh 3 mesiacov pred
rodič
commit
bbcaf184d6

+ 53 - 36
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/common/util/DateUtil.java

@@ -1,6 +1,7 @@
 package org.jeecg.modules.adweb.common.util;
 package org.jeecg.modules.adweb.common.util;
 
 
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
+
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.commons.lang3.tuple.Pair;
 
 
@@ -25,47 +26,40 @@ import java.util.stream.IntStream;
 @Slf4j
 @Slf4j
 public class DateUtil {
 public class DateUtil {
 
 
-    /**
-     * 标准日期格式(yyyy-MM-dd)
-     */
+    /** 标准日期格式(yyyy-MM-dd) */
     public static final String DATE_FORMAT = "yyyy-MM-dd";
     public static final String DATE_FORMAT = "yyyy-MM-dd";
 
 
-    /**
-     * 标准时间格式(yyyy-MM-dd HH:mm:ss)
-     */
+    /** 标准时间格式(yyyy-MM-dd HH:mm:ss) */
     public static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
     public static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
 
 
-    /**
-     * 带时区的时间格式(yyyy-MM-dd HH:mm:ss +00:00)
-     */
+    /** 带时区的时间格式(yyyy-MM-dd HH:mm:ss +00:00) */
     public static final String ZONED_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss X";
     public static final String ZONED_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss X";
 
 
-    /**
-     * 时间格式(yyyy/MM/dd)
-     */
+    /** 时间格式(yyyy/MM/dd) */
     public static final String SUBJECT_DATE_FORMAT = "yyyy/MM/dd";
     public static final String SUBJECT_DATE_FORMAT = "yyyy/MM/dd";
 
 
-    /**
-     * 时间格式(yyyyMMdd)
-     */
+    /** 时间格式(yyyyMMdd) */
     public static final String COMPACT_DATE_FORMAT = "yyyyMMdd";
     public static final String COMPACT_DATE_FORMAT = "yyyyMMdd";
 
 
-    /**
-     * 时间格式(yyyyMMddHHmmss)
-     */
+    /** 时间格式(yyyyMMddHHmmss) */
     public static final String COMPACT_DATE_TIME_FORMAT = "yyyyMMddHHmmss";
     public static final String COMPACT_DATE_TIME_FORMAT = "yyyyMMddHHmmss";
 
 
-    /**
-     * 带分钟的事件格式
-     * yyyy-MM-dd HH:mm
-     */
+    /** 带分钟的事件格式 yyyy-MM-dd HH:mm */
     public static final String DATE_FORMAT_MINUTE = "yyyy-MM-dd HH:mm";
     public static final String DATE_FORMAT_MINUTE = "yyyy-MM-dd HH:mm";
 
 
     public static final ZoneId DEFAULT_ZONE_ID = ZoneId.of("Asia/Shanghai");
     public static final ZoneId DEFAULT_ZONE_ID = ZoneId.of("Asia/Shanghai");
 
 
-    /**
-     * 取得系统当前日期
-     */
+    /* 日期类型, {@link #getDateRangeByType(String)}方法参数 */
+    public static final String DATE_TYPE_TODAY = "today";
+    public static final String DATE_TYPE_YESTERDAY = "yesterday";
+    public static final String DATE_TYPE_SEVEN_DAYS = "sevenDay";
+    public static final String DATE_TYPE_THIRTY_DAYS = "thirtyDay";
+    public static final String DATE_TYPE_THIS_WEEK = "thisWeek";
+    public static final String DATE_TYPE_LAST_WEEK = "lastWeek";
+    public static final String DATE_TYPE_THIS_MONTH = "thisMonth";
+    public static final String DATE_TYPE_LAST_MONTH = "lastMonth";
+
+    /** 取得系统当前日期 */
     public static Date getDate() {
     public static Date getDate() {
         return new Date();
         return new Date();
     }
     }
@@ -79,26 +73,51 @@ public class DateUtil {
      */
      */
     public static Pair<Date, Date> getDateRangeByType(String dateType) {
     public static Pair<Date, Date> getDateRangeByType(String dateType) {
         Date now = new Date();
         Date now = new Date();
+        Calendar calendar = Calendar.getInstance();
+
         Date start = null;
         Date start = null;
         Date end = null;
         Date end = null;
 
 
         switch (dateType) {
         switch (dateType) {
-            case "yesterday":
-                start = getTodayZeroTime(DateUtil.addDays(now, -1));
+            case DATE_TYPE_TODAY:
+                start = getTodayZeroTime(now);
                 end = start;
                 end = start;
                 break;
                 break;
-            case "today":
-                start = getTodayZeroTime(now);
+            case DATE_TYPE_YESTERDAY:
+                start = getTodayZeroTime(DateUtil.addDays(now, -1));
                 end = start;
                 end = start;
                 break;
                 break;
-            case "sevenDay":
+            case DATE_TYPE_SEVEN_DAYS:
                 end = getTodayZeroTime(now);
                 end = getTodayZeroTime(now);
                 start = addDays(end, -6);
                 start = addDays(end, -6);
                 break;
                 break;
-            case "thirtyDay":
+            case DATE_TYPE_THIRTY_DAYS:
                 end = getTodayZeroTime(now);
                 end = getTodayZeroTime(now);
                 start = addDays(end, -29);
                 start = addDays(end, -29);
                 break;
                 break;
+            case DATE_TYPE_THIS_WEEK:
+                calendar.set(Calendar.DAY_OF_WEEK, calendar.getFirstDayOfWeek());
+                start = getTodayZeroTime(calendar.getTime());
+                end = getTodayZeroTime(now);
+                break;
+            case DATE_TYPE_LAST_WEEK:
+                calendar.add(Calendar.DAY_OF_YEAR, -7);
+                calendar.set(Calendar.DAY_OF_WEEK, calendar.getFirstDayOfWeek());
+                start = getTodayZeroTime(calendar.getTime());
+                end = addDays(start, 6);
+                break;
+            case DATE_TYPE_THIS_MONTH:
+                calendar.set(Calendar.DAY_OF_MONTH, 1);
+                start = getTodayZeroTime(calendar.getTime());
+                end = getTodayZeroTime(now);
+                break;
+            case DATE_TYPE_LAST_MONTH:
+                calendar.add(Calendar.MONTH, -1);
+                calendar.set(Calendar.DAY_OF_MONTH, 1);
+                start = getTodayZeroTime(calendar.getTime());
+                calendar.set(
+                        Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
+                end = getTodayZeroTime(calendar.getTime());
             default:
             default:
                 // e.g. dateType = 7
                 // e.g. dateType = 7
                 if (StringUtils.isNumeric(dateType)) {
                 if (StringUtils.isNumeric(dateType)) {
@@ -146,7 +165,7 @@ public class DateUtil {
     /**
     /**
      * 在当前日期上追加N天
      * 在当前日期上追加N天
      *
      *
-     * @param date      当前日期
+     * @param date 当前日期
      * @param daysToAdd 添加天数
      * @param daysToAdd 添加天数
      * @return 日期字符串形式
      * @return 日期字符串形式
      */
      */
@@ -161,7 +180,7 @@ public class DateUtil {
      * 在当前日期上追加N年
      * 在当前日期上追加N年
      *
      *
      * @param date 当前日期
      * @param date 当前日期
-     * @param num  添加年数
+     * @param num 添加年数
      * @return 日期字符串形式
      * @return 日期字符串形式
      */
      */
     public static Date addYear(Date date, int num) {
     public static Date addYear(Date date, int num) {
@@ -185,9 +204,7 @@ public class DateUtil {
                         LocalDate.ofInstant(end.toInstant(), DEFAULT_ZONE_ID));
                         LocalDate.ofInstant(end.toInstant(), DEFAULT_ZONE_ID));
     }
     }
 
 
-    /**
-     * 获取start和end之间所有的日期,包含起止两端
-     */
+    /** 获取start和end之间所有的日期,包含起止两端 */
     public static List<Date> getAllDaysBetween(Date start, Date end) {
     public static List<Date> getAllDaysBetween(Date start, Date end) {
         return IntStream.rangeClosed(0, diffDays(start, end))
         return IntStream.rangeClosed(0, diffDays(start, end))
                 .mapToObj(diff -> addDays(start, diff))
                 .mapToObj(diff -> addDays(start, diff))