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;
    }
}
