package com.kexue.skills.common.util;


import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;

import java.util.Date;

/**
 * @author 维哥
 * @Description
 * @create 2025-03-03 10:58
 */
public class DateConverter {

    /**
     * 将中文日期格式转换为标准格式（yyyy-MM-dd）
     * @param chineseDate 示例："2025年2月22日"
     * @return 示例："2025-02-22"
     */
    public static String convertChineseDate(String chineseDate) {
        if (StrUtil.isBlank(chineseDate)) return null;
        return DateUtil.parse(chineseDate.replace("日", ""), "yyyy年M月d")
                .toString("yyyy-MM-dd");
    }

    /**
     * 将简写时间转换为标准时间格式（HH:mm:ss）
     * @param shortTime 示例："1:30" 或 "12:5"
     * @return 示例："01:30:00" 或 "12:05:00"
     */
    public static String convertShortTime(String shortTime) {
        if (StrUtil.isBlank(shortTime)) return null;

        // 处理缺失前导零的情况
        String[] parts = shortTime.split(":");
        if (parts.length != 2) return null;

        String hours = String.format("%02d", Integer.parseInt(parts[0]));
        String minutes = String.format("%02d", Integer.parseInt(parts[1]));

        return DateUtil.parseTime(hours + ":" + minutes + ":00").toString("HH:mm:ss");
    }

    public static Date convertChineseDateTime(String chineseDate, String shortTime){
        Date date = null;

        try {
            // 清洗非法null字符串
            if(chineseDate != null) {
                chineseDate.replace(" ","");
                chineseDate = chineseDate.replace(" null", "");  // 替换时间部分的null
                chineseDate = chineseDate.replace("null", "");   // 处理其他可能的null情况
                chineseDate = convertChineseDate(chineseDate);
            }

            if(shortTime != null) {
                shortTime.replace(" ","");
                shortTime = shortTime.replace(" null", "");  // 替换时间部分的null
                shortTime = shortTime.replace("null", "");   // 处理其他可能的null情况
                shortTime = convertShortTime(shortTime);
            }

            if (StrUtil.isNotBlank(chineseDate) && StrUtil.isNotBlank(shortTime)){
                date =  DateUtil.parse(chineseDate+ " " + convertShortTime(shortTime)==null?"00:00:00":convertShortTime(shortTime));
            }
            if (StrUtil.isNotBlank(chineseDate) && StrUtil.isBlank(shortTime)){
                return DateUtil.parse(chineseDate);
            }
        } catch (Exception e) {
            e.printStackTrace();//
        }
        date = DateUtil.parse(chineseDate + " 00:00:00");
        return date;
    }

    public static String convertChineseDateTimeStr(String chineseDate, String shortTime){
        if (StrUtil.isNotBlank(chineseDate) || StrUtil.isNotBlank(shortTime)){
            return convertChineseDate(chineseDate)+ " " + convertShortTime(shortTime);
        }
        return "";
    }

    // 测试示例
    public static void main(String[] args) {
        System.out.println(convertChineseDate("2025年2月22日")); // 输出：2025-02-22
        System.out.println(convertShortTime("1:30"));          // 输出：01:30:00
        System.out.println(convertShortTime("12:5"));          // 输出：12:05:00
    }
}
