12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- package com.liang.common.utils;
- import java.time.LocalDate;
- import java.time.format.DateTimeFormatter;
- import java.time.temporal.ChronoUnit;
- import java.util.Locale;
- /**
- * @Author ly
- * @Date 2024/6/30 17:44
- * @Version 1.0
- */
- public class DateUtil {
- public String convertDate(String inputDate) {
- if (inputDate == null || inputDate.isEmpty()) {
- return "";
- }
- // 定义输入格式的日期时间格式化器
- DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("dd-LLL-yyyy", Locale.CHINESE);
- // 将字符串解析为 LocalDate 对象
- LocalDate date = LocalDate.parse(inputDate, inputFormatter);
- // 定义输出格式的日期时间格式化器
- DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
- // 格式化日期为所需的输出格式
- String formattedDate = date.format(outputFormatter);
- return formattedDate;
- }
- /**
- * 判断两个给定日期是否相差少于三个月
- * @param startDate 开始日期
- * @param endDate 结束日期
- * @return 如果 startDate 和 endDate 相差少于三个月返回 true,否则返回 false
- */
- public boolean isWithinThreeMonths(LocalDate startDate, LocalDate endDate) {
- // 计算 startDate 和 endDate 之间的月份差距
- long monthsApart = ChronoUnit.MONTHS.between(startDate, endDate);
- // 判断绝对差距是否小于三个月
- return Math.abs(monthsApart) < 3;
- }
- public boolean areDatesWithinThreeMonths(String startDateStr, String endDateStr) {
- if (startDateStr.isEmpty() || endDateStr.isEmpty() ){
- return false;
- }
- // 将字符串日期转换为 LocalDate 对象
- LocalDate startDate = LocalDate.parse(startDateStr, DateTimeFormatter.ISO_DATE);
- LocalDate endDate = LocalDate.parse(endDateStr, DateTimeFormatter.ISO_DATE);
- // 使用已有方法检查
- return areDatesWithinThreeMonths(startDate, endDate);
- }
- public boolean areDatesWithinThreeMonths(LocalDate startDate, LocalDate endDate) {
- // 计算 startDate 和 endDate 之间的月份差距
- long monthsApart = ChronoUnit.MONTHS.between(startDate, endDate);
- // 判断绝对差距是否小于三个月
- return Math.abs(monthsApart) < 3;
- }
- }
|