2021-03-17T23:47:55.978+08:00 UTC时间转换

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 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 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的时候只用识别前面需要的部分,把后面时间忽略掉。

  关联文章: 时间戳转换

你可能感兴趣的:(java,UTC时间处理,java处理)