日期解析:2018-01-01T23:01:01+08:00

日期解析:2018-01-01T23:01:01+08:00

  • 老式Java API解析
  • Java8 解析
  • 使用第三方工具joda-time解析

这是一种常见的第三方接口返回的日期格式,因为有别于我们常用的"yyyy-MM-dd HH:mm:ss"格式,所以我们首先要把这种字符串解析为Date,再转为需要的格式。

老式Java API解析

        String a = "2018-10-10T16:20:35+08:00";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            Date date1 = sdf.parse(a);
            String dateString = sdf2.format(date1);
            System.out.println("date:"+dateString);
        } catch (ParseException e) {
            e.printStackTrace();
        }

在日期解析时需要注意:

  • T是不需要解析的无意义字符,需要用单引号包起来
  • +08:00是时区,对应为"XXX"

Java8 解析

这是一种标准日期格式,在Java8中有对这种日期格式的默认解析方式
Java8中提供了DateTimeFormatter类来解析/格式化日期。在DateTimeFormatter中定义了许多默认的日期格式,下面通过DateTimeFormatter中默认定义的ISO_OFFSET_DATE_TIME解析:

	String a = "2018-10-10T16:20:35+08:00";
	LocalDateTime date = LocalDateTime.parse(a,DateTimeFormatter.ISO_OFFSET_DATE_TIME);
	String dateString = date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
	System.out.println("dateString:"+dateString);

使用第三方工具joda-time解析

joda-time是一种面向 Java 应用程序的日期/时间库的替代选择 ,如果项目中有较多、较复杂的对时间/日期的处理,可以考虑使用这个库。
joda-time也有对这种标准日期格式的解析:

        String a = "2018-10-10T16:20:35+08:00";
        DateTime date = new DateTime(a).toDateTime();
        String dateString = date.toString("yyyy-MM-dd HH:mm:ss");
        System.out.println("dateString:"+dateString);

在使用joda-time时,需要引入对应的jar包。现在开发大都使用会使用构建工具管理jar包,下面给出在maven中引入joda-time依赖的方法:

        <dependency>
            <groupId>joda-timegroupId>
            <artifactId>joda-timeartifactId>
        dependency>

你可能感兴趣的:(日期解析:2018-01-01T23:01:01+08:00)