Explorar o código

提供获取周/月开始、结束时间方法

yzc %!s(int64=2) %!d(string=hai) anos
pai
achega
6cea1f7245

+ 69 - 15
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/DateUtils.java

@@ -1,6 +1,8 @@
 package com.sckw.core.utils;
 
 import cn.hutool.core.date.DateUtil;
+import org.springframework.util.Assert;
+
 import java.text.DateFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
@@ -8,10 +10,13 @@ import java.time.Duration;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
-import java.util.*;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Objects;
 
 /**
  * 日期处理
+ *
  * @author
  */
 public class DateUtils extends DateUtil {
@@ -119,7 +124,7 @@ public class DateUtils extends DateUtil {
     /**
      * 日期格式化 日期格式为:yyyy-MM-dd
      *
-     * @param date    日期
+     * @param date 日期
      * @return 返回yyMMdd格式日期
      */
     public static Date formatDate(String date) {
@@ -128,7 +133,7 @@ public class DateUtils extends DateUtil {
                 SimpleDateFormat df = new SimpleDateFormat(DATE_TIME_PATTERN);
                 return df.parse(date);
             }
-        } catch (Exception e){
+        } catch (Exception e) {
             e.printStackTrace();
         }
         return null;
@@ -138,7 +143,7 @@ public class DateUtils extends DateUtil {
     /**
      * 日期格式化 日期格式为:yyyy-MM-dd
      *
-     * @param date    日期
+     * @param date 日期
      * @return 返回yyMMdd格式日期
      */
     public static String formatDate(Date date) {
@@ -153,7 +158,7 @@ public class DateUtils extends DateUtil {
     /**
      * 日期格式化 日期格式为:yyyy-MM-dd
      *
-     * @param expireDate    日期
+     * @param expireDate 日期
      * @return 返回yyMMdd格式日期
      */
     public static String formatDateToYYMMDD(Date expireDate) {
@@ -196,6 +201,7 @@ public class DateUtils extends DateUtil {
 
     /**
      * 方法描述:将时间转换为制定格式的日期时间字符串
+     *
      * @param date
      * @return
      */
@@ -410,6 +416,7 @@ public class DateUtils extends DateUtil {
 
     /**
      * 对日期的【分钟】进行加/减
+     *
      * @param date    日期
      * @param minutes 分钟数,负数为减
      * @return 加/减几分钟后的日期
@@ -423,6 +430,7 @@ public class DateUtils extends DateUtil {
 
     /**
      * 对日期的【小时】进行加/减
+     *
      * @param date  日期
      * @param hours 小时数,负数为减
      * @return 加/减几小时后的日期
@@ -436,6 +444,7 @@ public class DateUtils extends DateUtil {
 
     /**
      * 对日期的【天】进行加/减
+     *
      * @param date 日期
      * @param days 天数,负数为减
      * @return 加/减几天后的日期
@@ -449,6 +458,7 @@ public class DateUtils extends DateUtil {
 
     /**
      * 对日期的【周】进行加/减
+     *
      * @param date  日期
      * @param weeks 周数,负数为减
      * @return 加/减几周后的日期
@@ -462,6 +472,7 @@ public class DateUtils extends DateUtil {
 
     /**
      * 对日期的【月】进行加/减
+     *
      * @param date   日期
      * @param months 月数,负数为减
      * @return 加/减几月后的日期
@@ -475,6 +486,7 @@ public class DateUtils extends DateUtil {
 
     /**
      * 对日期的【年】进行加/减
+     *
      * @param date  日期
      * @param years 年数,负数为减
      * @return 加/减几年后的日期
@@ -488,7 +500,8 @@ public class DateUtils extends DateUtil {
 
     /**
      * 时间比较大小
-     * @param date1  日期
+     *
+     * @param date1 日期
      * @param date2 年数,负数为减
      * @return -1 date1小于date2、0 date1等于date2、1 date1大于date2
      */
@@ -506,6 +519,7 @@ public class DateUtils extends DateUtil {
     /**
      * ltf 获取
      * 获取指定日期所在周的周一
+     *
      * @param date
      * @return
      */
@@ -518,28 +532,29 @@ public class DateUtils extends DateUtil {
         c.add(Calendar.DATE, c.getFirstDayOfWeek() - c.get(Calendar.DAY_OF_WEEK) + 1);
         return c.getTime();
     }
+
     /**
      * 获取startDate日期后month月的日期
+     *
      * @param startDate 开始日期
-     * @param month  几个月后
-     * @author wenzhang
+     * @param month     几个月后
      * @return
+     * @author wenzhang
      */
-    public static Date getMonthDate(Date startDate, int month){
+    public static Date getMonthDate(Date startDate, int month) {
         LocalDateTime localDateTime = startDate.toInstant()
-                .atZone(ZoneId.systemDefault() )
+                .atZone(ZoneId.systemDefault())
                 .toLocalDateTime().plusMonths(month);
-        Date date = Date.from(localDateTime.atZone( ZoneId.systemDefault()).toInstant());
+        Date date = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
         return date;
     }
 
     /**
-     *
      * @param days
-     * @author wenzhang
      * @return
+     * @author wenzhang
      */
-    public static Date getDateAdd(int days){
+    public static Date getDateAdd(int days) {
         SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
         Calendar c = Calendar.getInstance();
         c.add(Calendar.DAY_OF_MONTH, days);
@@ -549,6 +564,7 @@ public class DateUtils extends DateUtil {
 
     /**
      * 计算两个日期的月数
+     *
      * @param startDate
      * @param endDate
      * @return
@@ -564,7 +580,7 @@ public class DateUtils extends DateUtil {
         int month = endCalendar.get(Calendar.MONTH) - startCalendar.get(Calendar.MONTH);
         int day = Math.abs(endCalendar.get(Calendar.DATE) - startCalendar.get(Calendar.DATE));
 
-        if (year == 0 && month == 0){
+        if (year == 0 && month == 0) {
             startCalendar.set(Calendar.DATE, 1);
             endCalendar.set(Calendar.DATE, 1);
             endCalendar.roll(Calendar.DATE, -1);
@@ -594,4 +610,42 @@ public class DateUtils extends DateUtil {
         return monthCount;
     }
 
+    /**
+     * @desc: 获取周/月开始时间
+     * @author: yzc
+     * @date: 2023-09-11 16:08
+     * @Param dateType:  1周、2月
+     * @return: java.util.Date
+     */
+    public static Date getStartTimeByDateType(Integer dateType) {
+        Assert.notNull(dateType, "获取上周/月开始时间,日期类型参数缺失");
+        int days = Objects.equals(dateType, 1) ? 6 : 29;
+        LocalDateTime startTime = LocalDateTime.now().minusDays(days).with(LocalDateTime.MIN);
+        return formatDate(startTime);
+    }
+
+    /**
+     * @desc: 获取上周/月结束时间
+     * @author: yzc
+     * @date: 2023-09-11 16:43
+     * @Param dateType:
+     * @return: java.util.Date
+     */
+    public static Date getEndTimeByDateType(Integer dateType) {
+        Assert.notNull(dateType, "获取上周/月结束时间,日期类型参数缺失");
+        int days = Objects.equals(dateType, 1) ? 7 : 30;
+        LocalDateTime endTime = LocalDateTime.now().minusDays(days).with(LocalDateTime.MAX);
+        return formatDate(endTime);
+    }
+
+    /**
+     * @desc: LocalDateTime转换为Date
+     * @author: yzc
+     * @date: 2023-09-11 16:42
+     * @Param time:
+     * @return: java.util.Date
+     */
+    public static Date formatDate(LocalDateTime time) {
+        return Date.from(time.atZone(ZoneId.systemDefault()).toInstant());
+    }
 }