UTC时间转换
UTC时间,也就是国际统一时间/国际协调时,表示方法:
YYYYMMDD T HHMMSS Z(或者时区标识)。
比如比较时间: 2021-03-17T23:47:55.978+08:00
其中 “+08” 表示东八区。
要求
将数组中数值是字符串的UTC时间转换为常见的日期格式
[dream, 2021-03-17T23:47:55.978+08:00, 2021-03-17T23:57:55.978, yan]
变成:
[dream, 2021-03-17 23:47:55, 2021-03-17 23:57:55, yan]
处理:
思路:
1,先判断是否为日期格式
2,然后把utc日期格式的内容转换为常见的格式
代码:
public static void main(String[] args) {
List<String> strList = Lists.newArrayList("dream","2021-03-17T23:47:55.978+08:00","2021-03-17T23:57:55.978","yan");
System.out.println("======= change later===========");
System.out.println(strList.toString());
List<String> changeList = ListUtils.emptyIfNull(strList).stream().map(e -> {
if (isValidDate(e)) {
return formatTime(e);
}
return e;
}).collect(Collectors.toList());
System.out.println("======= change later===========");
System.out.println(changeList.toString());
}
public static String formatTime(String timeStr){
try {
SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf1.parse(timeStr);
return sdf2.format(date);
}catch (Exception e) {
e.printStackTrace();
}
return timeStr;
}
public static boolean isValidDate(String dateString) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
df.parse(dateString);
return true;
} catch (ParseException e) {
return false;
}
}
处理UTC时间的时候,中间的T 要加个'T',不然会识别不了,知道这个就好处理了。
结果:
======= change later===========
[dream, 2021-03-17T23:47:55.978+08:00, 2021-03-17T23:57:55.978, yan]
======= change later===========
[dream, 2021-03-17 23:47:55, 2021-03-17 23:57:55, yan]
总结:
UTC时间的处理,主要是T格式的识别,其次format的时候只用识别前面需要的部分,把后面时间忽略掉。
关联文章: 时间戳转换