package com.jyxt.getdatabyview; import java.time.LocalDate; import java.time.YearMonth; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; public class DateRangeUtil { public static String getDateRange(String input) { // 定义正则表达式匹配模式和对应的处理逻辑 Matcher monthMatcher = Pattern.compile("^(\\d{4})年(\\d{1,2})月份$").matcher(input); Matcher quarterMatcher = Pattern.compile("^(\\d{4})年第([1-4])季度$").matcher(input); Matcher halfYearMatcher = Pattern.compile("^(\\d{4})年(上|下)半年$").matcher(input); Matcher yearMatcher = Pattern.compile("^(\\d{4})年度$").matcher(input); try { if (monthMatcher.matches()) { int year = Integer.parseInt(monthMatcher.group(1)); int month = Integer.parseInt(monthMatcher.group(2)); YearMonth ym = YearMonth.of(year, month); return formatDate(ym.atDay(1), ym.atEndOfMonth()); } else if (quarterMatcher.matches()) { int year = Integer.parseInt(quarterMatcher.group(1)); int quarter = Integer.parseInt(quarterMatcher.group(2)); YearMonth startYm = YearMonth.of(year, (quarter - 1) * 3 + 1); YearMonth endYm = YearMonth.of(year, quarter * 3); return formatDate(startYm.atDay(1), endYm.atEndOfMonth()); } else if (halfYearMatcher.matches()) { int year = Integer.parseInt(halfYearMatcher.group(1)); String half = halfYearMatcher.group(2); YearMonth startYm = YearMonth.of(year, "上".equals(half) ? 1 : 7); YearMonth endYm = YearMonth.of(year, "上".equals(half) ? 6 : 12); return formatDate(startYm.atDay(1), endYm.atEndOfMonth()); } else if (yearMatcher.matches()) { int year = Integer.parseInt(yearMatcher.group(1)); return formatDate(YearMonth.of(year, 1).atDay(1), YearMonth.of(year, 12).atEndOfMonth()); } else { throw new IllegalArgumentException("无效的日期格式"); } } catch (Exception e) { throw new IllegalArgumentException("无效的日期参数", e); } } private static String formatDate(LocalDate start, LocalDate end) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); return start.format(formatter) + "|" + end.format(formatter); } public static void Test(){ String [] firstName = {"张","李","王","孙","赵"}; String [] lastName = {"一","二","三","四","五","六"}; Random rand = new Random(); int randomIntFirstName = rand.nextInt(5); int randomIntLastName = rand.nextInt(6); String UserName = firstName[randomIntFirstName] + lastName[randomIntLastName]; String [] firstWord = {"吃","穿","用","打"}; String [] lastWord = {"衣服","汽车","电话","电脑","杯子"}; int randomIntFirstWord = rand.nextInt(4); int randomIntLastWord = rand.nextInt(5); String Role = firstWord[randomIntFirstWord] + lastWord[randomIntLastWord]; Map params = new HashMap<>(); params.put("user_name", UserName); params.put("role", Role); List> list1 = new ArrayList<>(); list1.add(params); System.out.println(list1); } public static void main(String[] args) { // 测试用例 // System.out.println(getDateRange("2024年5月份")); // System.out.println(getDateRange("2024年11月份")); // System.out.println(getDateRange("2024年7月份")); // System.out.println(getDateRange("2020年上半年")); // System.out.println(getDateRange("2020年2月份")); // System.out.println(getDateRange("2021年2月份")); // System.out.println(getDateRange("2022年2月份")); // System.out.println(getDateRange("2023年2月份")); // System.out.println(getDateRange("2023年度")); // System.out.println(getDateRange("2023年第3季度")); // System.out.println(getDateRange("2025年第1季度")); Test(); Test(); Test(); Test(); Test(); Test(); Test(); Test(); Test(); Test(); } }