Просмотр исходного кода

update 优化日期与字符串工具类

AprilWind 1 год назад
Родитель
Сommit
e4f1da30fc

+ 19 - 6
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/DateUtils.java

@@ -175,14 +175,27 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
     }
 
     /**
-     * 计算两个日期之间的天数差(以毫秒为单位
+     * 计算两个时间之间的时间差,并以指定单位返回(绝对值
      *
-     * @param date1 第一个日期
-     * @param date2 第二个日期
-     * @return 两个日期之间的天数差的绝对值
+     * @param start 起始时间
+     * @param end   结束时间
+     * @param unit  所需返回的时间单位(DAYS、HOURS、MINUTES、SECONDS、MILLISECONDS、MICROSECONDS、NANOSECONDS)
+     * @return 时间差的绝对值,以指定单位表示
      */
-    public static int differentDaysByMillisecond(Date date1, Date date2) {
-        return Math.abs((int) ((date2.getTime() - date1.getTime()) / (1000 * 3600 * 24)));
+    public static long difference(Date start, Date end, TimeUnit unit) {
+        // 计算时间差,单位为毫秒,取绝对值避免负数
+        long diffInMillis = Math.abs(end.getTime() - start.getTime());
+
+        // 根据目标单位转换时间差
+        return switch (unit) {
+            case DAYS -> diffInMillis / TimeUnit.DAYS.toMillis(1);
+            case HOURS -> diffInMillis / TimeUnit.HOURS.toMillis(1);
+            case MINUTES -> diffInMillis / TimeUnit.MINUTES.toMillis(1);
+            case SECONDS -> diffInMillis / TimeUnit.SECONDS.toMillis(1);
+            case MILLISECONDS -> diffInMillis;
+            case MICROSECONDS -> TimeUnit.MILLISECONDS.toMicros(diffInMillis);
+            case NANOSECONDS -> TimeUnit.MILLISECONDS.toNanos(diffInMillis);
+        };
     }
 
     /**

+ 23 - 0
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StringUtils.java

@@ -6,6 +6,7 @@ import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.StrUtil;
 import org.springframework.util.AntPathMatcher;
 
+import java.nio.charset.Charset;
 import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
@@ -339,4 +340,26 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
         return false;
     }
 
+    /**
+     * 将字符串从源字符集转换为目标字符集
+     *
+     * @param input       原始字符串
+     * @param fromCharset 源字符集
+     * @param toCharset   目标字符集
+     * @return 转换后的字符串
+     */
+    public static String convert(String input, Charset fromCharset, Charset toCharset) {
+        if (isBlank(input)) {
+            return input;
+        }
+        try {
+            // 从源字符集获取字节
+            byte[] bytes = input.getBytes(fromCharset);
+            // 使用目标字符集解码
+            return new String(bytes, toCharset);
+        } catch (Exception e) {
+            return input;
+        }
+    }
+
 }