package com.JN.utils;

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

/**
 * @ClassName StringUtils
 * @Description 处理字符串的工具类
 * @Author JN
 * @Date 2024/1/9 14:02
 * @Version 1.0
 */
public class StringUtils {

    /**
     * @title getDefaultIfNull
     * @description 判断传入的字符串是否为null,如果为null则赋值为提供的默认值
     * @author JN
     * @param: value
     * @param: defaultValue
     * @updateTime 2024/1/9 14:03
     * @return: java.lang.String
     */
    public static String getDefaultIfNull(String value, String defaultValue) {
        return Optional.ofNullable(value).orElse(defaultValue);
    }

   /**
    * @title formatDateString
    * @description 格式化传入的日期字符串
    * @author JN
    * @param: dateTimeString 日期字符串 支持yyyy-MM-dd HH:mm:ss,SSS(小数点位数不固定)，支持yyyyMMdd
    * @param: pattern   你想要输出的格式
    * @updateTime 2024/1/15 9:52
    * @return: java.lang.String
    */
    public static String formatDateString(String dateTimeString, String pattern) {
        try {
            // 将时间字符串解析为 Date 对象
            SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
            Date parsedDate = inputFormat.parse(dateTimeString);

            // 格式化 Date 对象为指定格式的字符串
            SimpleDateFormat outputFormat = new SimpleDateFormat(pattern);
            return outputFormat.format(parsedDate);
        } catch (ParseException e) {
            // 解析失败时，尝试解析为纯日期格式
            try {
                SimpleDateFormat dateOnlyFormat = new SimpleDateFormat("yyyyMMdd");
                Date parsedDate = dateOnlyFormat.parse(dateTimeString);
                return new SimpleDateFormat(pattern).format(parsedDate);
            } catch (ParseException ex) {
                // 无法解析时的异常处理
                ex.printStackTrace();
                return "解析失败";
            }
        }
    }


}

