package com.njcn.gather.tool.adddata.util;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;

/**
 * add-data 模块时间工具。
 */
public final class AddDataDateTimeUtil {

    /** 统一返回格式。 */
    private static final DateTimeFormatter OUTPUT_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

    /** 允许的入参时间格式。 */
    private static final DateTimeFormatter[] INPUT_FORMATTERS = new DateTimeFormatter[]{
            DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"),
            DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"),
            DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss"),
            DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm")
    };

    private AddDataDateTimeUtil() {
    }

    /**
     * 解析请求时间。
     *
     * @param timeText 时间文本
     * @return 解析后的时间
     */
    public static LocalDateTime parse(String timeText) {
        for (DateTimeFormatter formatter : INPUT_FORMATTERS) {
            try {
                return LocalDateTime.parse(timeText, formatter);
            } catch (DateTimeParseException ignored) {
            }
        }
        throw new IllegalArgumentException("时间格式不正确，仅支持 yyyy-MM-dd HH:mm:ss 或 yyyy-MM-dd'T'HH:mm:ss");
    }

    /**
     * 格式化时间。
     *
     * @param time 时间对象
     * @return 格式化结果
     */
    public static String format(LocalDateTime time) {
        return time == null ? null : time.format(OUTPUT_FORMATTER);
    }
}
