package top.imwork.commons.core.utils;

import top.imwork.commons.core.constants.DateConstants;
import static top.imwork.commons.core.constants.NumberConstants.FOUR;
import static top.imwork.commons.core.constants.NumberConstants.ZERO;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Copyright (C), 2015-2022
 * FileName: DateUtils
 * Author<作者姓名>:   jiangxiaowei
 * CreateTime<创建时间>:   2022/5/18 16:21
 * UpdateTime<修改时间>:   2022/5/18 16:21
 * Description〈功能简述〉: 时间处理工具
 * History<历史描述>:
 * Since<版本号>: 1.0.0
 */
public class DateUtils {
    private DateUtils() {
    }

    /**
     * 默认时间格式(yyyy-MM-dd HH:mm:ss) 格式化
     *
     * @param date 要格式化的时间
     * @return String 格式化后的字符串表示
     */
    public static String format(Date date) {
        return format(date, DateConstants.DATE_TIME_PATTERN);
    }

    /**
     * 时间格式化
     *
     * @param date    要格式化的时间
     * @param pattern 时间格式
     * @return String   格式化后的字符串表示
     */
    public static String format(Date date, String pattern) {
        if (date != null) {
            SimpleDateFormat df = new SimpleDateFormat(pattern);
            return df.format(date);
        }
        return null;
    }

    /**
     * 获取当前时间字符串 格式为：yyyy-MM-dd HH:mm:ss
     *
     * @return String 字符串形式的时间
     */
    public static String getCurrentDateString() {
        return format(new Date(), DateConstants.DATE_TIME_PATTERN);
    }

    /**
     * 获取当前时间字符串 格式自行指定
     *
     * @return String 字符串形式的时间
     */
    public static String getCurrentDateString(String pattern) {
        return format(new Date(), pattern);
    }

    /**
     * 获取时间字符串中的年份
     *
     * @param dateStr 日期
     * @return String 年份
     */
    public static String getYear(String dateStr) {
        if (StringUtils.isEmpty(dateStr) || dateStr.length() < 4) {
            return null;
        }
        return dateStr.substring(ZERO, FOUR);
    }
}