mitao
2024-04-10 2da6576ce17cb18f042f561648230736945ec4c1
ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java
@@ -1,16 +1,21 @@
package com.ruoyi.common.utils;
import org.apache.commons.lang3.time.DateFormatUtils;
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;
/**
 * 时间工具类
@@ -18,6 +23,7 @@
 * @author ruoyi
 */
public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
    public static String YYYY = "yyyy";
    public static String YYYY_MM = "yyyy-MM";
@@ -331,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
@@ -354,16 +372,52 @@
    /**
     * 获取当前季度字符串
     *
     * @return
     * @throws Exception
     * @return 当前季度字符串
     * @throws Exception 异常
     */
    public static String getNowQuarter() throws Exception {
        //当前所在季度
        Date date = new Date();
        int quarterOfYear = getQuarterOfYear(date);
        String quarterOfYearStr = null;
        quarterOfYearStr = NumberDisplaceChineseUtil.numberToChinese(quarterOfYear);
        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年四季度")));
    }
}