Lius
2025-03-03 75d26035001d85c12dc3ca93455b0fee477c3f77
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/DateUtils.java
@@ -1,8 +1,6 @@
package org.jeecg.modules.mdc.util;
import io.swagger.models.auth.In;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.ParseException;
@@ -10,6 +8,8 @@
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.format.TextStyle;
import java.time.temporal.ChronoField;
import java.time.temporal.ChronoUnit;
import java.util.*;
@@ -1098,4 +1098,40 @@
        return formattedHours + "小时" + formattedMinutes + "分" + formattedSeconds + "秒";
    }
    public static List<String[]> generateMonthlyDateRanges(String inputDate) {
        List<String[]> dateRanges = new ArrayList<>();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
        // 解析传入的日期
        LocalDate date = LocalDate.parse(inputDate, formatter);
        // 如果当前日期是18号或之前,结束日期是上个月的18号
        LocalDate endDate = date.getDayOfMonth() <= 18
                ? date.minusMonths(1).withDayOfMonth(18)
                : date.withDayOfMonth(18);
        // 循环生成12个月的日期范围
        for (int i = 0; i < 12; i++) {
            // 开始日期:上上个月的19号
            LocalDate startDate = endDate.minusMonths(1).withDayOfMonth(19);
            String startDateStr = startDate.format(formatter);
            String endDateStr = endDate.format(formatter);
            // 获取月份名称(如:2月)
            String monthName = endDate.getMonth().getDisplayName(TextStyle.FULL, Locale.CHINA);
            // 将日期范围和月份名称添加到集合中(倒序插入)
            dateRanges.add(0, new String[]{startDateStr, endDateStr, monthName});
            // 回退到上个月的18号
            endDate = endDate.minusMonths(1).withDayOfMonth(18);
        }
        return dateRanges;
    }
}