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

 更新时间:2021年08月16日 16:47:36   作者:Evloution_  
这篇文章主要介绍了java 如何将多种字符串格式 解析为Date格式的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

将多种字符串格式 解析为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;
    }

Java String格式的标准时间字符串转换为Date格式

场景

前端在往后端传递时间参数时,传递的是标准时间格式的字符串。

比如下面的lxyf参数

怎样将其转换为Date格式。

实现

调用如下转换格式的方法

Date lxyfDate = str2Date(lxyf);

方法的具体实现

    public  Date str2Date(String dateString) {
         String FORMAT_STRING = "yyyy-MM-dd HH:mm:ss";
         String[] REPLACE_STRING = new String[]{"GMT+0800", "GMT+08:00"};
         String SPLIT_STRING = "(中国标准时间)";
        try {
            dateString = dateString.split(Pattern.quote(SPLIT_STRING))[0].replace(REPLACE_STRING[0], REPLACE_STRING[1]);
            SimpleDateFormat sf1 = new SimpleDateFormat("E MMM dd yyyy HH:mm:ss z", Locale.US);
            Date date = sf1.parse(dateString);
            return date;
        } catch (Exception e) {
            throw new RuntimeException("时间转化格式错误" + "[dateString=" + dateString + "]" + "[FORMAT_STRING=" + FORMAT_STRING + "]");
        }
    }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详谈hibernate,jpa与spring data jpa三者之间的关系

    详谈hibernate,jpa与spring data jpa三者之间的关系

    这篇文章主要介绍了hibernate,jpa与spring data jpa三者之间的关系,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Kotlin语言编程Regex正则表达式实例详解

    Kotlin语言编程Regex正则表达式实例详解

    这篇文章主要为大家介绍了Kotlin语言编程Regex正则表达式实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • 详解Spring Boot 部署jar和war的区别

    详解Spring Boot 部署jar和war的区别

    本篇文章主要介绍了详解Spring Boot 部署jar和war的区别,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Spring注解配置IOC,DI的方法详解

    Spring注解配置IOC,DI的方法详解

    这篇文章主要为大家介绍了vue组件通信的几种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • 深入理解java代码实现分治算法

    深入理解java代码实现分治算法

    分治算法是一种递归算法,它将问题划分为几个独立的子问题,然后递归地解决这些子问题,最后将子问题的解合并起来得到原问题的解,本文详细的介绍java分治算法,感兴趣的可以了解一下
    2023-09-09
  • Java中避免过多if-else的几种方法

    Java中避免过多if-else的几种方法

    这篇文章主要介绍了Java中避免过多if-else的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Rxjava+Retrofit+MVP实现购物车功能

    Rxjava+Retrofit+MVP实现购物车功能

    这篇文章主要为大家详细介绍了Rxjava+Retrofit+MVP实现购物车功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • 教你怎么用Java实现给图片打上水印

    教你怎么用Java实现给图片打上水印

    这篇文章主要介绍了教你怎么用Java实现给图片打上水印,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • JAVA基于数组实现的商品信息查询功能示例

    JAVA基于数组实现的商品信息查询功能示例

    这篇文章主要介绍了JAVA基于数组实现的商品信息查询功能,结合实例形式详细分析了java使用数组存储数据实现的商品信息查询功能相关操作技巧,需要的朋友可以参考下
    2019-11-11
  • Java基本数据类型(动力节点java学院整理)

    Java基本数据类型(动力节点java学院整理)

    Java数据类型(type)可以分为两大类:基本类型(primitive types)和引用类型(reference types)。下面是动力节点给大家整理java基本数据类型相关知识,感兴趣的朋友一起学习吧
    2017-03-03

最新评论