package jnpf.personnels.utils;

import cn.hutool.core.date.DateUtil;

import java.time.ZoneId;
import java.util.Date;

/**
 * @Author: peng.hao
 * @create: 2026/3/18
 */
public class CovertDateUtils {

    /**
     * 将对象转换为 Date 类型（支持 LocalDateTime 和 Date）
     *
     * @param obj 待转换的对象
     * @return Date 对象，如果转换失败则返回 null
     */
    public static Date convertToDate(Object obj) {
        if (obj == null) {
            return null;
        }
        
        if (obj instanceof Date) {
            return (Date) obj;
        } else if (obj instanceof java.time.LocalDateTime) {
            java.time.LocalDateTime localDateTime = (java.time.LocalDateTime) obj;
            Date from = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
            // 格式化为 yyyy-MM-dd
            String format = DateUtil.format(from, "yyyy-MM-dd");
            return DateUtil.parseDate(format);
        }
        return null;
    }

    /**
     * 将对象转换为 String 类型的日期（支持 LocalDateTime 和 Date）
     *
     * @param obj 待转换的对象
     * @return 格式化的日期字符串（yyyy-MM-dd），如果转换失败则返回 null
     */
    public static String convertToStringDate(Object obj) {
        if (obj == null) {
            return null;
        }

        if (obj instanceof Date) {
            return DateUtil.format((Date) obj, "yyyy-MM-dd");
        } else if (obj instanceof java.time.LocalDateTime) {
            java.time.LocalDateTime localDateTime = (java.time.LocalDateTime) obj;
            Date from = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
            // 格式化为 yyyy-MM-dd
            return DateUtil.format(from, "yyyy-MM-dd");
        }
        return null;
    }
}
