package com.hotwj.platform.reportStatistics.template;

import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;

/**
 * 日期工具类
 *
 * @author shihongwei
 * @date 2026-1-3
 */
public class DateTool {

    /**
     * 格式化日期
     *
     * @param pattern 日期格式
     * @param dateObj 日期对象
     * @return 格式化后的日期字符串
     */
    public String format(String pattern, Object dateObj) {
        if (dateObj == null) return "";
        Date date = toDate(dateObj);
        if (date == null) return "";
        return new SimpleDateFormat(pattern).format(date);
    }

    /**
     * 将日期对象转换为Date类型
     *
     * @param obj 日期对象
     * @return Date类型日期
     */
    private Date toDate(Object obj) {
        if (obj instanceof Date) {
            return (Date) obj;
        }
        if (obj instanceof LocalDate) {
            return Date.from(((LocalDate) obj).atStartOfDay(ZoneId.systemDefault()).toInstant());
        }
        if (obj instanceof LocalDateTime) {
            return Date.from(((LocalDateTime) obj).atZone(ZoneId.systemDefault()).toInstant());
        }
        return null;
    }
}
