java 将多种字符串格式 解析为Date格式

现在有多种日期格式,比如"2018/01/01"、"2018-01-01"、"2018 01 01"、"2018-01-01 12:12:12"、"2018年1月1日"

如何解析这些字符串呢?之前也是被困扰了很长时间,官方给我返回的时间格式为yyyyMMdd,我得解析成我想要的格式。

大神地址:点击进入

import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Date;
 
public class DateParse {
    /**
     * @param inputDate 要解析的字符串
     * @param patterns 可能出现的日期格式
     * @return 解析出来的日期,如果没有匹配的返回null
     */
    public static Date parseDate(String inputDate,String[] patterns){
        SimpleDateFormat df = new SimpleDateFormat();
        for(String pattern:patterns){
            df.applyPattern(pattern);
            df.setLenient(false);//设置解析日期格式是否严格解析日期
            ParsePosition pos = new ParsePosition(0);
            Date date = df.parse(inputDate, pos);
            if(date!=null){
                return date;
            }
        }
        return null;
    }
    //验证结果
    public static void main(String[] args) {
        String[] possiblePatterns =
                {
                        "yyyy-MM-dd",
                        "yyyy-MM-dd HH:mm:ss",
                        "yyyyMMdd",
                        "yyyy/MM/dd",
                        "yyyy年MM月dd日",
                        "yyyy MM dd"
                };
 
        String inputDate1 = "2018-01-01";
        String inputDate2 = "2018-01-01 12:12:12";
        String inputDate3 = "20180101";
        String inputDate4 = "2018/01/01";
        String inputDate5 = "2018年01月01日";
        String inputDate6 = "2018 01 01";
        System.out.println(parseDate(inputDate6,possiblePatterns));
        System.out.println(parseDate(inputDate1,possiblePatterns));
        System.out.println(parseDate(inputDate2,possiblePatterns));
        System.out.println(parseDate(inputDate3,possiblePatterns));
        System.out.println(parseDate(inputDate4,possiblePatterns));
        System.out.println(parseDate(inputDate5,possiblePatterns));
        System.out.println(parseDate(inputDate6,possiblePatterns));
    }
}

 

还有一个更简便的方法:org.apache.commons:commons-lang 包中有一个DateUtils类已经实现了这个功能。

public static Date parseDate(String inputDate) {
        Date outputDate = null;
        String[] possibleDateFormats =
                {
                        "yyyy-MM-dd",
                        "yyyyMMdd",
                        "yyyy/MM/dd",
                        "yyyy年MM月dd日",
                        "yyyy MM dd"
                };
 
        try {
            outputDate = DateUtils.parseDate(inputDate, possibleDateFormats);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return outputDate;
    }

 

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值