字符串转时间工具类

这是一个Java代码实现的日期转换工具类,包含将字符串格式的日期转换为LocalDate和Date的方法。支持多种日期格式,如'yyyyMMdd', 'yyyy-MM-dd'等,并能处理包含中文字符的日期格式。

目录

0. 定义变量值

1. String 转 LocalDate 

2. String 转 Date

 

0. 定义变量值

    public static final String YYYYMMDD = "yyyyMMdd";
    public static final String YYYY_MM_DD = "yyyy-MM-dd";
    public static final String YYYY_MM = "yyyy-MM";
    public static final String YYYY_YEAR_MM_MOUTH_DD_DAY = "yyyy年MM月dd日";
    public static final String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
    public static final String YYYY_SLASH_MM_SLASH_DD = "yyyy/MM/dd";
    public static final String YYYY_SLASH_MM_SLASH_DD_HH_MM_SS = "yyyy/MM/dd HH:mm:ss";
    public static final String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
    private static final String  FORMAT01 = "-";
    private static final String  FORMAT02 = ":";
    private static final String  FORMAT03 = "/";
    private static final String  FORMAT04 = "";
    private static final String YEAR = "年";
    private static final String MONTH = "月";
    private static final String DAY = "日";
    private static final Integer EIGHT = 8;
    private static final Map<String, SimpleDateFormat> SIMPLE_DATE_FORMAT_MAP = new HashMap<String, SimpleDateFormat>(){{
        put(YYYYMMDD,new SimpleDateFormat(YYYYMMDD));
        put(YYYY_MM_DD,new SimpleDateFormat(YYYY_MM_DD));
        put(YYYY_MM_DD_HH_MM_SS,new SimpleDateFormat(YYYY_MM_DD_HH_MM_SS));
        put(YYYY_SLASH_MM_SLASH_DD,new SimpleDateFormat(YYYY_SLASH_MM_SLASH_DD));
        put(YYYY_SLASH_MM_SLASH_DD_HH_MM_SS,new SimpleDateFormat(YYYY_SLASH_MM_SLASH_DD_HH_MM_SS));
        put(YYYYMMDDHHMMSS,new SimpleDateFormat(YYYYMMDDHHMMSS));
    }};

1. String 转 LocalDate 



    /**
     * 支持类型 yyyy-MM-dd yyyy-MM-dd HH:mm:ss yyyy/MM/dd yyyy/MM/dd HH:mm:ss yyyy年MM月dd日 
     * @param dateStr
     * @return
     */
    public static LocalDate str2LocalDate(String dateStr) {
        LocalDate res = null;
        if (!StringUtils.isEmpty(dateStr)) {
            if (dateStr.contains(YEAR)) {
                dateStr = dateStr.replace(YEAR, FORMAT01);
            }
            if (dateStr.contains(MONTH)) {
                dateStr = dateStr.replace(MONTH, FORMAT01);
            }
            if (dateStr.contains(DAY)) {
                dateStr = dateStr.replace(DAY, FORMAT04);
            }
            String pattern = YYYY_MM_DD;
            if (dateStr.contains(FORMAT02)) {
                if (dateStr.contains(FORMAT01)) {
                    pattern = YYYY_MM_DD_HH_MM_SS;
                } else {
                    pattern = YYYY_SLASH_MM_SLASH_DD_HH_MM_SS;
                }
            } else if (dateStr.contains(FORMAT03)) {
                pattern = YYYY_SLASH_MM_SLASH_DD;
            }
            res = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern(pattern));
        }
        return res;
    }

2. String 转 Date

    /**
     * 支持类型 yyyyMMdd yyyy-MM-dd yyyy-MM-dd HH:mm:ss yyyy/MM/dd yyyy/MM/dd HH:mm:ss yyyy年MM月dd日
     * @param dateStr
     * @return
     */
    public static Date str2Date(String dateStr) {
        Date date = null;
        if (!StringUtils.isEmpty(dateStr)) {
            if (dateStr.contains(YEAR)) {
                dateStr = dateStr.replace(YEAR, FORMAT01);
            }
            if (dateStr.contains(MONTH)) {
                dateStr = dateStr.replace(MONTH, FORMAT01);
            }
            if (dateStr.contains(DAY)) {
                dateStr = dateStr.replace(DAY, FORMAT04);
            }
            SimpleDateFormat sdf = null;
            String pattern = YYYY_MM_DD;
            if (dateStr.contains(FORMAT02)) {
                if (dateStr.contains(FORMAT01)) {
                    pattern = YYYY_MM_DD_HH_MM_SS;
                } else {
                    pattern = YYYY_SLASH_MM_SLASH_DD_HH_MM_SS;
                }
            } else if (dateStr.contains(FORMAT03)) {
                pattern = YYYY_SLASH_MM_SLASH_DD;
            } else if (dateStr.length() == EIGHT) {
                if (dateStr.contains(FORMAT01)) {
                    pattern = YYYY_MM_DD;
                } else {
                    pattern = YYYYMMDD;
                }

            }
            sdf = SIMPLE_DATE_FORMAT_MAP.get(pattern);
            date = sdf.parse(dateStr, new ParsePosition(0));
        }

        return date;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

璃墟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值