From a7a8a50f48c1bff5ddc52b3bad1782328f8043d8 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期五, 12 四月 2024 18:50:20 +0800
Subject: [PATCH] 基础数据配置接口修改

---
 ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java |  152 +++++++++++++++++++++++++++++++++-----------------
 1 files changed, 99 insertions(+), 53 deletions(-)

diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java
index 01b986b..04099af 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java
@@ -1,24 +1,29 @@
 package com.ruoyi.common.utils;
 
+import cn.hutool.core.convert.NumberChineseFormatter;
 import java.lang.management.ManagementFactory;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.time.*;
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
-
 import org.apache.commons.lang3.time.DateFormatUtils;
 
 /**
  * 时间工具类
- * 
+ *
  * @author ruoyi
  */
-public class DateUtils extends org.apache.commons.lang3.time.DateUtils
-{
+public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
+
     public static String YYYY = "yyyy";
 
     public static String YYYY_MM = "yyyy-MM";
@@ -30,63 +35,52 @@
     public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
 
     private static String[] parsePatterns = {
-            "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", 
+            "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM",
             "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM",
             "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"};
 
     /**
      * 获取当前Date型日期
-     * 
+     *
      * @return Date() 当前日期
      */
-    public static Date getNowDate()
-    {
+    public static Date getNowDate() {
         return new Date();
     }
 
     /**
      * 获取当前日期, 默认格式为yyyy-MM-dd
-     * 
+     *
      * @return String
      */
-    public static String getDate()
-    {
+    public static String getDate() {
         return dateTimeNow(YYYY_MM_DD);
     }
 
-    public static final String getTime()
-    {
+    public static final String getTime() {
         return dateTimeNow(YYYY_MM_DD_HH_MM_SS);
     }
 
-    public static final String dateTimeNow()
-    {
+    public static final String dateTimeNow() {
         return dateTimeNow(YYYYMMDDHHMMSS);
     }
 
-    public static final String dateTimeNow(final String format)
-    {
+    public static final String dateTimeNow(final String format) {
         return parseDateToStr(format, new Date());
     }
 
-    public static final String dateTime(final Date date)
-    {
+    public static final String dateTime(final Date date) {
         return parseDateToStr(YYYY_MM_DD, date);
     }
 
-    public static final String parseDateToStr(final String format, final Date date)
-    {
+    public static final String parseDateToStr(final String format, final Date date) {
         return new SimpleDateFormat(format).format(date);
     }
 
-    public static final Date dateTime(final String format, final String ts)
-    {
-        try
-        {
+    public static final Date dateTime(final String format, final String ts) {
+        try {
             return new SimpleDateFormat(format).parse(ts);
-        }
-        catch (ParseException e)
-        {
+        } catch (ParseException e) {
             throw new RuntimeException(e);
         }
     }
@@ -94,8 +88,7 @@
     /**
      * 日期路径 即年/月/日 如2018/08/08
      */
-    public static final String datePath()
-    {
+    public static final String datePath() {
         Date now = new Date();
         return DateFormatUtils.format(now, "yyyy/MM/dd");
     }
@@ -103,8 +96,7 @@
     /**
      * 日期路径 即年/月/日 如20180808
      */
-    public static final String dateTime()
-    {
+    public static final String dateTime() {
         Date now = new Date();
         return DateFormatUtils.format(now, "yyyyMMdd");
     }
@@ -112,18 +104,13 @@
     /**
      * 日期型字符串转化为日期 格式
      */
-    public static Date parseDate(Object str)
-    {
-        if (str == null)
-        {
+    public static Date parseDate(Object str) {
+        if (str == null) {
             return null;
         }
-        try
-        {
+        try {
             return parseDate(str.toString(), parsePatterns);
-        }
-        catch (ParseException e)
-        {
+        } catch (ParseException e) {
             return null;
         }
     }
@@ -131,8 +118,7 @@
     /**
      * 获取服务器启动时间
      */
-    public static Date getServerStartDate()
-    {
+    public static Date getServerStartDate() {
         long time = ManagementFactory.getRuntimeMXBean().getStartTime();
         return new Date(time);
     }
@@ -140,20 +126,18 @@
     /**
      * 计算相差天数
      */
-    public static int differentDaysByMillisecond(Date date1, Date date2)
-    {
+    public static int differentDaysByMillisecond(Date date1, Date date2) {
         return Math.abs((int) ((date2.getTime() - date1.getTime()) / (1000 * 3600 * 24)));
     }
 
     /**
      * 计算时间差
      *
-     * @param endDate 最后时间
+     * @param endDate   最后时间
      * @param startTime 开始时间
      * @return 时间差(天/小时/分钟)
      */
-    public static String timeDistance(Date endDate, Date startTime)
-    {
+    public static String timeDistance(Date endDate, Date startTime) {
         long nd = 1000 * 24 * 60 * 60;
         long nh = 1000 * 60 * 60;
         long nm = 1000 * 60;
@@ -174,8 +158,7 @@
     /**
      * 增加 LocalDateTime ==> Date
      */
-    public static Date toDate(LocalDateTime temporalAccessor)
-    {
+    public static Date toDate(LocalDateTime temporalAccessor) {
         ZonedDateTime zdt = temporalAccessor.atZone(ZoneId.systemDefault());
         return Date.from(zdt.toInstant());
     }
@@ -183,8 +166,7 @@
     /**
      * 增加 LocalDate ==> Date
      */
-    public static Date toDate(LocalDate temporalAccessor)
-    {
+    public static Date toDate(LocalDate temporalAccessor) {
         LocalDateTime localDateTime = LocalDateTime.of(temporalAccessor, LocalTime.of(0, 0, 0));
         ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault());
         return Date.from(zdt.toInstant());
@@ -250,6 +232,7 @@
         calendar.setTime(date);
         return calendar.get(Calendar.MONTH) / 3 + 1;
     }
+
     /**
      * 指定日期所在季度的第一天/最后一天时间
      *
@@ -354,6 +337,18 @@
     }
 
     /**
+     * Date转为LocalDateTime
+     *
+     * @param date 日期
+     * @return LocalDateTime
+     */
+    public static LocalDate dateToLocalDate(Date date) {
+        Instant instant = date.toInstant();
+        ZoneId zoneId = ZoneId.systemDefault();
+        return instant.atZone(zoneId).toLocalDate();
+    }
+
+    /**
      * localdate转为字符串
      *
      * @param time localdate
@@ -374,4 +369,55 @@
         return LocalDate.parse(time, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
     }
 
+    /**
+     * 获取当前季度字符串
+     *
+     * @return 当前季度字符串
+     * @throws Exception 异常
+     */
+    public static String getNowQuarter() throws Exception {
+        //当前所在季度
+        Date date = new Date();
+        char quarterOfYear = String.valueOf(getQuarterOfYear(date)).toCharArray()[0];
+        String quarterOfYearStr = NumberChineseFormatter.numberCharToChinese(quarterOfYear, false);
+        LocalDate now = LocalDate.now();
+        return String.format("%s年%s季度", now.getYear(), quarterOfYearStr);
+    }
+
+    public static Date getQuarterDate(String quarter) {
+        // 提取年份和季度信息
+        int year = Integer.parseInt(quarter.substring(0, 4));
+        int quarterNumber = NumberChineseFormatter.chineseToNumber(quarter.substring(5, 6)); // 季度数字
+        // 计算季度初的日期
+        LocalDate startDate;
+        switch (quarterNumber) {
+            case 1:
+                startDate = LocalDate.of(year, 1, 1);
+                break;
+            case 2:
+                startDate = LocalDate.of(year, 4, 1);
+                break;
+            case 3:
+                startDate = LocalDate.of(year, 7, 1);
+                break;
+            case 4:
+                startDate = LocalDate.of(year, 10, 1);
+                break;
+            default:
+                throw new IllegalArgumentException("Invalid quarter number: " + quarterNumber);
+        }
+        return DateUtils.toDate(startDate);
+    }
+
+    //测试 getNowQuarter
+    public static void main(String[] args) throws Exception {
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String nowQuarter = getNowQuarter();
+        System.out.println(nowQuarter);
+        System.out.println(NumberChineseFormatter.chineseToNumber("一"));
+        System.out.println(simpleDateFormat.format(getQuarterDate("2024年一季度")));
+        System.out.println(simpleDateFormat.format(getQuarterDate("2024年二季度")));
+        System.out.println(simpleDateFormat.format(getQuarterDate("2024年三季度")));
+        System.out.println(simpleDateFormat.format(getQuarterDate("2024年四季度")));
+    }
 }

--
Gitblit v1.7.1