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


这是一种常见的第三方接口返回的日期格式,因为有别于我们常用的"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-time</groupId>
            <artifactId>joda-time</artifactId>
        </dependency>
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值