lengfaqiang 2 лет назад
Родитель
Сommit
63c6d372f2

+ 225 - 9
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/utils/DateUtil.java

@@ -1,6 +1,8 @@
 package com.sckw.excel.utils;
 
 
+import cn.hutool.core.date.DateField;
+import cn.hutool.core.date.DateTime;
 import com.sckw.core.exception.BusinessException;
 import com.sckw.core.utils.StringUtils;
 
@@ -8,9 +10,7 @@ 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.GregorianCalendar;
+import java.util.*;
 
 /**
  * @description: 时间工具类
@@ -29,6 +29,11 @@ public class DateUtil {
     public DateUtil() {
     }
 
+    /**
+     * 获取当前时间
+     *
+     * @return
+     */
     public static long getSystemTimeMillis() {
         Clock clock = Clock.systemDefaultZone();
         return clock.millis();
@@ -116,7 +121,7 @@ public class DateUtil {
      * @param str
      * @return
      */
-    public static LocalDateTime strToDateTime(String str) {
+    public static LocalDateTime strToLocalDateTime(String str) {
         LocalDate localDate = LocalDate.parse(str, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
         LocalDateTime localDateTime = localDate.atStartOfDay();
         String format = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
@@ -134,6 +139,33 @@ public class DateUtil {
         return LocalDate.parse(str, DateTimeFormatter.ofPattern("yyyyMMdd"));
     }
 
+    /**
+     * yyyyMMdd 转换成 LocalDate
+     *
+     * @param str
+     * @return
+     */
+    public static LocalDate strToDateTime(String str) {
+        return LocalDate.parse(str, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+    }
+
+    /**
+     * yyyy-MM-dd HH:mm:ss 转换成 Date
+     *
+     * @param str
+     * @return
+     */
+    public static Date strDateTimeToDateTime(String str) {
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DEFAULT_DATE_PATTERN);
+        Date parse = null;
+        try {
+            parse = simpleDateFormat.parse(str);
+        } catch (ParseException e) {
+            throw new RuntimeException(e);
+        }
+        return parse;
+    }
+
 
     /**
      * @param time yyyy-MM-dd
@@ -154,6 +186,63 @@ public class DateUtil {
         }
     }
 
+
+    /**
+     * 获取上周和上上周的开始时间和结束时间
+     * @return
+     */
+    private static Map<String, String> getLastWeekTime() {
+        cn.hutool.core.date.Week week = DateTime.now().dayOfWeekEnum();
+        switch (week) {
+            /** 周一 */
+            case MONDAY:
+                return getRealizeLastWeekTime(-14, -8, -7, -1);
+            /** 周二 */
+            case TUESDAY:
+                return getRealizeLastWeekTime(-15, -9, -8, -2);
+            /** 周三 */
+            case WEDNESDAY:
+                return getRealizeLastWeekTime(-16, -10, -9, -3);
+            /** 周四 */
+            case THURSDAY:
+                return getRealizeLastWeekTime(-17, -11, -10, -4);
+            /** 周五 */
+            case FRIDAY:
+                return getRealizeLastWeekTime(-18, -12, -11, -5);
+            /** 周六 */
+            case SATURDAY:
+                return getRealizeLastWeekTime(-19, -13, -12, -6);
+            /** 周日 */
+            case SUNDAY:
+                return getRealizeLastWeekTime(-20, -14, -13, -7);
+            default:
+                throw new RuntimeException("method:getLastWeekTime,获取当前时间是周几异常");
+        }
+    }
+
+
+    private static Map<String, String>  getRealizeLastWeekTime(int upLastStartOffset,int upLastEndOffset,int lastStartOffset,int lastEndOffset) {
+        // 获取上上周的开始时间和结束时间
+        String startUpLastWeekTime = DateTime.now().offset(DateField.DAY_OF_YEAR, upLastStartOffset)
+                .setField(DateField.HOUR_OF_DAY,0).setField(DateField.MINUTE,0)
+                .setField(DateField.SECOND,0).setField(DateField.MILLISECOND,0).toString();
+        String endUpLastWeekTime = DateTime.now().offset(DateField.DAY_OF_YEAR, upLastEndOffset)
+                .setField(DateField.HOUR_OF_DAY,23).setField(DateField.MINUTE,59)
+                .setField(DateField.SECOND,59).setField(DateField.MILLISECOND,0).toString();
+        // 获取上周的开始时间和结束时间
+        String startLastWeekTime = DateTime.now().offset(DateField.DAY_OF_YEAR, lastStartOffset)
+                .setField(DateField.HOUR_OF_DAY,0).setField(DateField.MINUTE,0)
+                .setField(DateField.SECOND,0).setField(DateField.MILLISECOND,0).toString();
+        String endLastWeekTime = DateTime.now().offset(DateField.DAY_OF_YEAR, lastEndOffset)
+                .setField(DateField.HOUR_OF_DAY,23).setField(DateField.MINUTE,59)
+                .setField(DateField.SECOND,59).setField(DateField.MILLISECOND,0).toString();
+        Map<String, String> maps = new HashMap();
+        maps.put("startUpLastWeekTime", startUpLastWeekTime);
+        maps.put("endUpLastWeekTime", endUpLastWeekTime);
+        maps.put("startLastWeekTime", startLastWeekTime);
+        maps.put("endLastWeekTime", endLastWeekTime);
+        return maps;
+    }
     /**
      * yyyy-MM-dd 转换成 Date
      *
@@ -373,11 +462,20 @@ public class DateUtil {
     }
 
     public static void main(String[] args) {
-        String s = "2023-12-12";
-        Date date = DateUtil.stringPatchingStartToDateTime(s);
-        Date date1 = DateUtil.stringPatchingEndToDateTime(s);
-        System.out.println(date);
-        System.out.println(date1);
+//        String s = "2023-12-12";
+//        Date date = DateUtil.stringPatchingStartToDateTime(s);
+//        Date date1 = DateUtil.stringPatchingEndToDateTime(s);
+//        System.out.println(date);
+//        System.out.println(date1);
+//        String lastWeekDateStart = getLastWeekDateStart();
+//        String lastWeekDateEnd = getLastWeekDateEnd();
+//        System.out.println(lastWeekDateStart);
+//        System.out.println(lastWeekDateEnd);
+        String beforeWeekDate = DateUtil.getBeforeWeekDate(6)+" 00:00:00";
+        String beforeWeekDate1 = DateUtil.getBeforeWeekDate(7)+" 23:59:59";;
+        System.out.println(beforeWeekDate);
+        System.out.println(beforeWeekDate1);
+
     }
 
     public static int getCurrentMonthDays() {
@@ -537,4 +635,122 @@ public class DateUtil {
         private Lanagues() {
         }
     }
+
+    /**
+     * 当前时间的前一个星期
+     *
+     * @return
+     */
+    public static String getLastWeekDate() {
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Calendar c = Calendar.getInstance();
+        c.add(Calendar.DAY_OF_MONTH, -6);
+        String start = format.format(c.getTime());
+        System.out.println(start);
+        return start;
+    }
+
+    /**
+     * 当前时间的前一个星期
+     *
+     * @return
+     */
+    public static String getLastWeekDateStart() {
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+        Calendar c = Calendar.getInstance();
+        c.add(Calendar.DAY_OF_MONTH, -6);
+        String start = format.format(c.getTime()) + " 00:00:00";
+//        System.out.println(start);
+        return start;
+    }
+
+
+    /**
+     * 当前时间的前一个星期
+     *
+     * @return
+     */
+    public static String getLastWeekDateEnd() {
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+        Calendar c = Calendar.getInstance();
+        c.add(Calendar.DAY_OF_MONTH, -6);
+        String start = format.format(c.getTime()) + " 23:59:59";
+//        System.out.println(start);
+        return start;
+    }
+
+    /**
+     * 获取当前日期之前的时间
+     *
+     * @param amount 往前推多久时间[天为单位]
+     * @return
+     */
+    public static String getBeforeWeekDate(int amount) {
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+        Calendar c = Calendar.getInstance();
+        c.add(Calendar.DAY_OF_MONTH, -amount);
+        String start = format.format(c.getTime());
+        return start;
+    }
+
+
+    /**
+     * 当天日期前一个月
+     *
+     * @return
+     */
+    public static String getLastMonthDate() {
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Calendar c = Calendar.getInstance();
+        c.add(Calendar.MONTH, -1);
+        String start = format.format(c.getTime());
+        System.out.println(start);
+        return start;
+    }
+
+
+    /**
+     * 获取当前日期之前的时间
+     *
+     * @param amount 往前推多久时间[月为单位]
+     * @return
+     */
+    public static String getBeforeMonthDate(int amount) {
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+        Calendar c = Calendar.getInstance();
+        c.add(Calendar.MONTH, -amount);
+        String start = format.format(c.getTime());
+        return start;
+    }
+
+
+    /**
+     * 当天日期前两个月
+     *
+     * @return
+     */
+    public static String getLastMonthDate1() {
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Calendar c = Calendar.getInstance();
+        c.setTime(strDateTimeToDateTime(getLastMonthDate()));
+        c.add(Calendar.MONTH, -1);
+        String start = format.format(c.getTime());
+        System.out.println(start);
+        return start;
+    }
+
+    /**
+     * 当前时间的前一年开始时间
+     *
+     * @return
+     */
+    public static String getLastYearDate() {
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Calendar c = Calendar.getInstance();
+        c.add(Calendar.YEAR, -1);
+        String start = format.format(c.getTime());
+        System.out.println(start);
+        return start;
+    }
+
 }