这是一种常见的第三方接口返回的日期格式,因为有别于我们常用的"yyyy-MM-dd HH:mm:ss"格式,所以我们首先要把这种字符串解析为Date,再转为需要的格式。
类似日期2021-11-12T10:27:06+08:00 的 格式为:yyyy-MM-dd’T’HH:mm:ssXXX
其中:
T是不需要解析的无意义字符,需要用单引号包起来
+08:00是时区,对应为"XXX"
- 老式Java API解析
String a = "2021-11-12T10:27:06+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();
}
- JAVA8解析
这是一种标准日期格式,在Java8中有对这种日期格式的默认解析方式
Java8中提供了DateTimeFormatter类来解析/格式化日期。
在DateTimeFormatter中定义了许多默认的日期格式,下面通过DateTimeFormatter中默认定义的ISO_OFFSET_DATE_TIME解析:
String a = "2021-11-12T10:27:06+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);