DateUtil.java 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package com.liang.common.utils;
  2. import java.time.LocalDate;
  3. import java.time.format.DateTimeFormatter;
  4. import java.time.temporal.ChronoUnit;
  5. import java.util.Locale;
  6. /**
  7. * @Author ly
  8. * @Date 2024/6/30 17:44
  9. * @Version 1.0
  10. */
  11. public class DateUtil {
  12. public String convertDate(String inputDate) {
  13. if (inputDate == null || inputDate.isEmpty()) {
  14. return "";
  15. }
  16. // 定义输入格式的日期时间格式化器
  17. DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("dd-LLL-yyyy", Locale.CHINESE);
  18. // 将字符串解析为 LocalDate 对象
  19. LocalDate date = LocalDate.parse(inputDate, inputFormatter);
  20. // 定义输出格式的日期时间格式化器
  21. DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
  22. // 格式化日期为所需的输出格式
  23. String formattedDate = date.format(outputFormatter);
  24. return formattedDate;
  25. }
  26. /**
  27. * 判断两个给定日期是否相差少于三个月
  28. * @param startDate 开始日期
  29. * @param endDate 结束日期
  30. * @return 如果 startDate 和 endDate 相差少于三个月返回 true,否则返回 false
  31. */
  32. public boolean isWithinThreeMonths(LocalDate startDate, LocalDate endDate) {
  33. // 计算 startDate 和 endDate 之间的月份差距
  34. long monthsApart = ChronoUnit.MONTHS.between(startDate, endDate);
  35. // 判断绝对差距是否小于三个月
  36. return Math.abs(monthsApart) < 3;
  37. }
  38. public boolean areDatesWithinThreeMonths(String startDateStr, String endDateStr) {
  39. if (startDateStr.isEmpty() || endDateStr.isEmpty() ){
  40. return false;
  41. }
  42. // 将字符串日期转换为 LocalDate 对象
  43. LocalDate startDate = LocalDate.parse(startDateStr, DateTimeFormatter.ISO_DATE);
  44. LocalDate endDate = LocalDate.parse(endDateStr, DateTimeFormatter.ISO_DATE);
  45. // 使用已有方法检查
  46. return areDatesWithinThreeMonths(startDate, endDate);
  47. }
  48. public boolean areDatesWithinThreeMonths(LocalDate startDate, LocalDate endDate) {
  49. // 计算 startDate 和 endDate 之间的月份差距
  50. long monthsApart = ChronoUnit.MONTHS.between(startDate, endDate);
  51. // 判断绝对差距是否小于三个月
  52. return Math.abs(monthsApart) < 3;
  53. }
  54. }