ソースを参照

add
优化定时任务

# Conflicts:
# nb-admin/src/main/resources/application-dev.yml

lifang 1 ヶ月 前
コミット
890ebfeae4

+ 1 - 1
nb-admin/src/main/resources/application.yml

@@ -7,7 +7,7 @@ spring:
   application:
     name: nb
   profiles:
-    active: dev
+    active: prod
   jackson:
     time-zone: GMT+8
   flyway:

+ 58 - 8
nb-core/src/main/java/com/nb/core/utils/DateCompareUtil.java

@@ -2,6 +2,9 @@ package com.nb.core.utils;
 
 import cn.hutool.core.date.DateUtil;
 
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
 import java.util.Date;
 
 /**
@@ -14,13 +17,13 @@ import java.util.Date;
 public class DateCompareUtil {
 
     /**
-     * 按年月日时分进行比较,忽略毫秒部分
+     * 按年月日时分进行比较,忽略秒和毫秒部分,时区为东八区
      *
      * @param date1 第一个日期
      * @param date2 第二个日期
-     * @return 如果两个日期的年月日时分相同返回true,否则返回false
+     * @return 如果两个日期的年月日时分相同返回true,否则返回false
      */
-    public static boolean isSameDateTimeIgnoreMillis(Date date1, Date date2) {
+    public static boolean isSameDateTimeIgnoreSeconds(Date date1, Date date2) {
         if (date1 == null && date2 == null) {
             return true;
         }
@@ -28,8 +31,13 @@ public class DateCompareUtil {
             return false;
         }
 
-        String format = "yyyy-MM-dd HH:mm:ss";
-        return DateUtil.format(date1, format).equals(DateUtil.format(date2, format));
+        // 转换为东八区 LocalDateTime
+        ZoneId chinaZone = ZoneId.of("Asia/Shanghai");
+        LocalDateTime localDateTime1 = date1.toInstant().atZone(chinaZone).toLocalDateTime();
+        LocalDateTime localDateTime2 = date2.toInstant().atZone(chinaZone).toLocalDateTime();
+        
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
+        return localDateTime1.format(formatter).equals(localDateTime2.format(formatter));
     }
 
     /**
@@ -47,11 +55,35 @@ public class DateCompareUtil {
             return false;
         }
 
-        return DateUtil.isSameDay(date1, date2);
+        // 转换为东八区进行比较
+        ZoneId chinaZone = ZoneId.of("Asia/Shanghai");
+        LocalDateTime localDateTime1 = date1.toInstant().atZone(chinaZone).toLocalDateTime();
+        LocalDateTime localDateTime2 = date2.toInstant().atZone(chinaZone).toLocalDateTime();
+
+        return localDateTime1.toLocalDate().equals(localDateTime2.toLocalDate());
     }
 
     /**
-     * 按年月日时分秒毫秒进行精确比较
+     * 按年月日时分秒进行比较,忽略毫秒部分
+     *
+     * @param date1 第一个日期
+     * @param date2 第二个日期
+     * @return 如果两个日期的年月日时分秒相同返回true,否则返回false
+     */
+    public static boolean isSameDateTimeIgnoreMillis(Date date1, Date date2) {
+        if (date1 == null && date2 == null) {
+            return true;
+        }
+        if (date1 == null || date2 == null) {
+            return false;
+        }
+
+        String format = "yyyy-MM-dd HH:mm:ss";
+        return DateUtil.format(date1, format).equals(DateUtil.format(date2, format));
+    }
+
+    /**
+     * 按年月日时分秒毫秒进行精确比较,时区为东八区
      *
      * @param date1 第一个日期
      * @param date2 第二个日期
@@ -65,6 +97,24 @@ public class DateCompareUtil {
             return false;
         }
 
-        return date1.equals(date2);
+        // 转换为东八区进行比较
+        ZoneId chinaZone = ZoneId.of("Asia/Shanghai");
+        LocalDateTime localDateTime1 = date1.toInstant().atZone(chinaZone).toLocalDateTime();
+        LocalDateTime localDateTime2 = date2.toInstant().atZone(chinaZone).toLocalDateTime();
+        
+        return localDateTime1.equals(localDateTime2);
+    }
+    
+    /**
+     * 将Date转换为年月日时分字符串形式,时区为东八区
+     * 
+     * @param date 待转换的日期
+     * @return 格式为"yyyy-MM-dd HH:mm"的字符串
+     */
+    public static Date convertToyyyyMMddHHmm(Date date) {
+        if (date == null) {
+            return null;
+        }
+        return DateUtil.beginOfMinute(date);
     }
 }