DateRangeUtil.java 4.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package com.jyxt.getdatabyview;
  2. import java.time.LocalDate;
  3. import java.time.YearMonth;
  4. import java.time.format.DateTimeFormatter;
  5. import java.util.*;
  6. import java.util.regex.Matcher;
  7. import java.util.regex.Pattern;
  8. public class DateRangeUtil {
  9. public static String getDateRange(String input) {
  10. // 定义正则表达式匹配模式和对应的处理逻辑
  11. Matcher monthMatcher = Pattern.compile("^(\\d{4})年(\\d{1,2})月份$").matcher(input);
  12. Matcher quarterMatcher = Pattern.compile("^(\\d{4})年第([1-4])季度$").matcher(input);
  13. Matcher halfYearMatcher = Pattern.compile("^(\\d{4})年(上|下)半年$").matcher(input);
  14. Matcher yearMatcher = Pattern.compile("^(\\d{4})年度$").matcher(input);
  15. try {
  16. if (monthMatcher.matches()) {
  17. int year = Integer.parseInt(monthMatcher.group(1));
  18. int month = Integer.parseInt(monthMatcher.group(2));
  19. YearMonth ym = YearMonth.of(year, month);
  20. return formatDate(ym.atDay(1), ym.atEndOfMonth());
  21. } else if (quarterMatcher.matches()) {
  22. int year = Integer.parseInt(quarterMatcher.group(1));
  23. int quarter = Integer.parseInt(quarterMatcher.group(2));
  24. YearMonth startYm = YearMonth.of(year, (quarter - 1) * 3 + 1);
  25. YearMonth endYm = YearMonth.of(year, quarter * 3);
  26. return formatDate(startYm.atDay(1), endYm.atEndOfMonth());
  27. } else if (halfYearMatcher.matches()) {
  28. int year = Integer.parseInt(halfYearMatcher.group(1));
  29. String half = halfYearMatcher.group(2);
  30. YearMonth startYm = YearMonth.of(year, "上".equals(half) ? 1 : 7);
  31. YearMonth endYm = YearMonth.of(year, "上".equals(half) ? 6 : 12);
  32. return formatDate(startYm.atDay(1), endYm.atEndOfMonth());
  33. } else if (yearMatcher.matches()) {
  34. int year = Integer.parseInt(yearMatcher.group(1));
  35. return formatDate(YearMonth.of(year, 1).atDay(1), YearMonth.of(year, 12).atEndOfMonth());
  36. } else {
  37. throw new IllegalArgumentException("无效的日期格式");
  38. }
  39. } catch (Exception e) {
  40. throw new IllegalArgumentException("无效的日期参数", e);
  41. }
  42. }
  43. private static String formatDate(LocalDate start, LocalDate end) {
  44. DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
  45. return start.format(formatter) + "|" + end.format(formatter);
  46. }
  47. public static void Test(){
  48. String [] firstName = {"张","李","王","孙","赵"};
  49. String [] lastName = {"一","二","三","四","五","六"};
  50. Random rand = new Random();
  51. int randomIntFirstName = rand.nextInt(5);
  52. int randomIntLastName = rand.nextInt(6);
  53. String UserName = firstName[randomIntFirstName] + lastName[randomIntLastName];
  54. String [] firstWord = {"吃","穿","用","打"};
  55. String [] lastWord = {"衣服","汽车","电话","电脑","杯子"};
  56. int randomIntFirstWord = rand.nextInt(4);
  57. int randomIntLastWord = rand.nextInt(5);
  58. String Role = firstWord[randomIntFirstWord] + lastWord[randomIntLastWord];
  59. Map<String, Object> params = new HashMap<>();
  60. params.put("user_name", UserName);
  61. params.put("role", Role);
  62. List<Map<String, Object>> list1 = new ArrayList<>();
  63. list1.add(params);
  64. System.out.println(list1);
  65. }
  66. public static void main(String[] args) {
  67. // 测试用例
  68. // System.out.println(getDateRange("2024年5月份"));
  69. // System.out.println(getDateRange("2024年11月份"));
  70. // System.out.println(getDateRange("2024年7月份"));
  71. // System.out.println(getDateRange("2020年上半年"));
  72. // System.out.println(getDateRange("2020年2月份"));
  73. // System.out.println(getDateRange("2021年2月份"));
  74. // System.out.println(getDateRange("2022年2月份"));
  75. // System.out.println(getDateRange("2023年2月份"));
  76. // System.out.println(getDateRange("2023年度"));
  77. // System.out.println(getDateRange("2023年第3季度"));
  78. // System.out.println(getDateRange("2025年第1季度"));
  79. Test();
  80. Test();
  81. Test();
  82. Test();
  83. Test();
  84. Test();
  85. Test();
  86. Test();
  87. Test();
  88. Test();
  89. }
  90. }