| | |
| | | package org.jeecg.modules.mdc.util; |
| | | |
| | | |
| | | import io.swagger.models.auth.In; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.text.DecimalFormat; |
| | | import java.text.ParseException; |
| | |
| | | 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.*; |
| | |
| | | |
| | | 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; |
| | | } |
| | | |
| | | |
| | | |
| | | } |