package com.smppw.modaq.infrastructure.util;

import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.smppw.modaq.common.conts.DateConst;
import com.smppw.modaq.common.conts.PatternConsts;

import java.util.Date;
import java.util.regex.Matcher;

public class DateUtils {
    /**
     * 字符串转日期类型
     *
     * @param input 待转换的字符串
     * @return 返回日期如果有时间要去掉时间部分
     */
    public static Date toDate(String input) {
        if (StrUtil.isBlank(input)) {
            return null;
        }
        // 处理类似这样的日期区间"2024/01/01-2024/02/01"
        if (input.contains("-") && input.contains("/")) {
            input = StrUtil.split(input, "-").get(1);
        }
        // 把字符串中的日期分隔符去掉，包括前后和中间
        input = input.replaceAll("-_/", "").trim();
        Matcher matcher = PatternConsts.STRICT_DAY_PATTERN.matcher(input);
        if (matcher.find()) {
            try {
                // 日期格式化，支持格式如下：yyyy年MM月dd日、yyyy-MM-dd、yyyy/MM/dd、yyyy_MM_dd和yyyyMMdd
                return DateUtil.parse(matcher.group(),
                        DatePattern.CHINESE_DATE_PATTERN,
                        DateConst.YYYYMMDD,
                        DatePattern.NORM_DATE_PATTERN,
                        "yyyy/MM/dd",
                        "yyyy_MM_dd",
                        "yyyy.MM.dd",
                        "yyyy年MM月dd");
            } catch (Exception ignored) {
            }
        }
        return null;
    }
}
