| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- 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<String, Object> params = new HashMap<>();
- params.put("user_name", UserName);
- params.put("role", Role);
- List<Map<String, Object>> 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();
- }
- }
|