Lius
2025-03-04 61bd1f27cb0f83890bfcd9aec6257eda13c0fc4d
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,11 +8,14 @@
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.*;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream;
public class DateUtils {
@@ -1098,4 +1099,62 @@
        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;
    }
    /**
     * 获取近7天日期 格式为 yyyy-MM-dd
     * @return
     */
    public static List<String> getNearWeek() {
        // 获取今天的日期
        LocalDate today = LocalDate.now();
        // 定义日期格式化器
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(STR_DATE);
        // 获取并格式化前七天的日期
        return IntStream.rangeClosed(1, 7)
                .mapToObj(today::minusDays)
                .sorted(LocalDate::compareTo)
                .map(date -> date.format(formatter))
                .collect(Collectors.toList());
    }
}