Ver código fonte

时间工具类

lengfaqiang 2 anos atrás
pai
commit
d1fcfe2119

+ 167 - 15
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/utils/DateUtil.java

@@ -522,8 +522,8 @@ public class DateUtil {
     }
 
     public static void main(String[] args) throws ParseException {
-        String lastTwoMonthDate = getLastTwoMonthDateStart();
-        String lastTwoMonthDateEnd = getLastTwoMonthDateEnd();
+//        String lastTwoMonthDate = getLastTwoMonthDateStart();
+//        String lastTwoMonthDateEnd = getLastTwoMonthDateEnd();
 //        String s = "2023-12-12";
 //        Date date = DateUtil.stringPatchingStartToDateTime(s);
 //        Date date1 = DateUtil.stringPatchingEndToDateTime(s);
@@ -549,15 +549,42 @@ public class DateUtil {
 //        System.out.println(localDateTime);
 //        LocalDateTime beforeWeekDateEnd = getBeforeWeekDateEnd(6);
 //        System.out.println(beforeWeekDateEnd);
-        String format = LocalDateTime.now().format(DateTimeFormatter.ofPattern(DEFAULT_DATE_PATTERN));
-        System.out.println(format);
-        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DEFAULT_DATE_PATTERN);
-        LocalDateTime parse = LocalDateTime.parse(format, formatter);
-        System.out.println(parse);
-        LocalDateTime lastWeekDateStart = getLastWeekDateStart(6);
-        System.out.println(lastWeekDateStart);
-        LocalDateTime lastWeekDateEnd = getLastWeekDateEnd(6);
-        System.out.println(lastWeekDateEnd);
+//        String format = LocalDateTime.now().format(DateTimeFormatter.ofPattern(DEFAULT_DATE_PATTERN));
+//        System.out.println(format);
+//        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DEFAULT_DATE_PATTERN);
+//        LocalDateTime parse = LocalDateTime.parse(format, formatter);
+//        System.out.println(parse);
+//        LocalDateTime lastWeekDateStart = getLastWeekDateStart(6);
+//        System.out.println(lastWeekDateStart);
+//        LocalDateTime lastWeekDateEnd = getLastWeekDateEnd(6);
+//        System.out.println(lastWeekDateEnd);
+
+
+//        //本月
+//        //开始时间
+//
+//        String weekDateStart = getBeforeMonthDateAndDaysStartToString(1, -1);
+//        System.out.println(weekDateStart);
+//        //结束时间
+//        String weekDateEnd = getLastWeekDateEndToString(0);
+//        System.out.println(weekDateEnd);
+//        //环比本月
+//        //开始时间
+//        String beforeMonthDateAndDaysEndToString = getBeforeMonthDateAndDaysStartToString(2, -1);
+//        System.out.println(beforeMonthDateAndDaysEndToString);
+//        //结束时间
+//        String beforeMonthDateAndDaysEndToString1 = getBeforeMonthDateAndDaysEndToString(1, 0);
+//        System.out.println(beforeMonthDateAndDaysEndToString1);
+        //月
+        //开始时间
+        String monthDateStart = DateUtil.getBeforeMonthDateAndDaysStartToString(LocalDateTime.now(), 1, -1);
+        //结束时间
+        String monthDateEnd = DateUtil.getLastWeekDateEndToString(0);
+        //环比上月
+        //开始时间
+        String lastMonthDateStart = DateUtil.getBeforeMonthDateAndDaysStartToString(LocalDateTime.now(), 2, -1);
+        //结束时间
+        String lastMonthDateEnd = DateUtil.getBeforeMonthDateAndDaysEndToString(LocalDateTime.now(),1, 0);
 
     }
 
@@ -749,6 +776,23 @@ public class DateUtil {
         return localDateTime;
     }
 
+    /**
+     * 当前时间的前一个星期[传递6即为一周]
+     *
+     * @return 2023-09-12 00:00:00
+     */
+    public static String getLastWeekDateStartToString(LocalDate localDate,long amount) {
+//        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";
+//        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DEFAULT_DATE_PATTERN);
+//        LocalDateTime localDateTime = LocalDateTime.parse(start, formatter);
+        LocalDateTime localDateTime = localDate.minusDays(amount).atStartOfDay();
+        String format = localDateTime.format(YYYY_MM_DD_HH_MM_SS);
+        return format;
+    }
+
 
     /**
      * 当前时间的前一个星期 [传递6即为一周]
@@ -765,6 +809,19 @@ public class DateUtil {
         return parse;
     }
 
+    /**
+     * 当前时间的前一个星期 [传递6即为一周]
+     *
+     * @return 2023-09-12 23:59:59
+     */
+    public static String getLastWeekDateEndToString(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()) + " 23:59:59";
+        return start;
+    }
+
     /**
      * 当前时间的前一个星期
      *
@@ -846,7 +903,7 @@ public class DateUtil {
         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
         Calendar c = Calendar.getInstance();
         c.add(Calendar.MONTH, -1);
-        String start = format.format(c.getTime())+" 00:00:00";
+        String start = format.format(c.getTime()) + " 00:00:00";
         System.out.println(start);
         return start;
     }
@@ -860,7 +917,7 @@ public class DateUtil {
         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
         Calendar c = Calendar.getInstance();
         c.add(Calendar.MONTH, -1);
-        String start = format.format(c.getTime())+" 23:59:59";
+        String start = format.format(c.getTime()) + " 23:59:59";
         return start;
     }
 
@@ -879,11 +936,106 @@ public class DateUtil {
         return start;
     }
 
+    /**
+     * 获取当前日期之前的时间
+     *
+     * @param amount 往前推多久时间[月为单位]
+     * @return 2023-09-13 00:00:00
+     */
+    public static LocalDateTime getBeforeMonthDateStart(int amount) {
+        LocalDateTime localDateTime = LocalDateTime.now().minusMonths(amount);
+        String start = localDateTime.format(DateTimeFormatter.ofPattern(DEF_DATE_FORMAT)) + " 00:00:00";
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DEFAULT_DATE_PATTERN);
+        LocalDateTime returnLocalDateTime = LocalDateTime.parse(start, formatter);
+        return returnLocalDateTime;
+    }
+
+    /**
+     * 获取当前日期之前的时间
+     *
+     * @param amount 往前推多久时间[月为单位]
+     * @return 2023-09-13 00:00:00
+     */
+    public static LocalDateTime getBeforeMonthDateAndDaysStart(int amount, long days) {
+        LocalDateTime localDateTime = LocalDateTime.now().minusMonths(amount).minusDays(days);
+        String start = localDateTime.format(DateTimeFormatter.ofPattern(DEF_DATE_FORMAT)) + " 00:00:00";
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DEFAULT_DATE_PATTERN);
+        LocalDateTime returnLocalDateTime = LocalDateTime.parse(start, formatter);
+        return returnLocalDateTime;
+    }
+
+    /**
+     * 获取当前日期之前的时间
+     *
+     * @param amount 往前推多久时间[月为单位]
+     * @return 2023-09-13 00:00:00
+     */
+    public static String getBeforeMonthDateStartToString(int amount) {
+        LocalDateTime localDateTime = LocalDateTime.now().minusMonths(amount);
+        String start = localDateTime.format(DateTimeFormatter.ofPattern(DEF_DATE_FORMAT)) + " 00:00:00";
+        return start;
+    }
+
+    /**
+     * 获取当前日期之前的时间
+     *
+     * @param amount 往前推多久时间[月为单位]
+     * @return 2023-09-13 00:00:00
+     */
+    public static String getBeforeMonthDateAndDaysStartToString(LocalDateTime localDateTime, int amount, long days) {
+        localDateTime = localDateTime.minusMonths(amount).minusDays(days);
+        String start = localDateTime.format(DateTimeFormatter.ofPattern(DEF_DATE_FORMAT)) + " 00:00:00";
+        return start;
+    }
+
+    /**
+     * 获取当前日期之前的时间
+     *
+     * @param amount 往前推多久时间[月为单位]
+     * @return 2023-09-13 23:59:59
+     */
+    public static LocalDateTime getBeforeMonthDateEnd(int amount) {
+        LocalDateTime localDateTime = LocalDateTime.now().minusMonths(amount);
+        String start = localDateTime.format(DateTimeFormatter.ofPattern(DEF_DATE_FORMAT)) + " 23:59:59";
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DEFAULT_DATE_PATTERN);
+        LocalDateTime returnLocalDateTime = LocalDateTime.parse(start, formatter);
+        return returnLocalDateTime;
+    }
+
+
+    /**
+     * 获取当前日期之前的时间
+     *
+     * @param amount 往前推多久时间[月为单位]
+     * @param days   减去几天
+     * @return 2023-09-13 23:59:59
+     */
+    public static String getBeforeMonthDateAndDaysEndToString(LocalDateTime localDateTime, int amount, long days) {
+        localDateTime = localDateTime.minusMonths(amount).minusDays(days);
+        String start = localDateTime.format(DateTimeFormatter.ofPattern(DEF_DATE_FORMAT)) + " 23:59:59";
+        return start;
+    }
+
+    /**
+     * 获取当前日期之前的时间
+     *
+     * @param amount 往前推多久时间[月为单位]
+     * @param days   减去几天
+     * @return 2023-09-13 23:59:59
+     */
+    public static LocalDateTime getBeforeMonthDateAndDaysEndToLocalDateTime(int amount, long days) {
+        LocalDateTime localDateTime = LocalDateTime.now().minusMonths(amount).minusDays(days);
+        String start = localDateTime.format(DateTimeFormatter.ofPattern(DEF_DATE_FORMAT)) + " 23:59:59";
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DEFAULT_DATE_PATTERN);
+        LocalDateTime returnLocalDateTime = LocalDateTime.parse(start, formatter);
+        return returnLocalDateTime;
+    }
+
 
     /**
      * 当天日期前两个月
      *
-     * @return
+     * @return 2023-09-13 00:00:00
      */
     public static String getLastTwoMonthDateStart() {
         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -897,7 +1049,7 @@ public class DateUtil {
     /**
      * 当天日期前两个月
      *
-     * @return
+     * @return 2023-09-13 23:59:59
      */
     public static String getLastTwoMonthDateEnd() {
         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");