一般前后端传递时间采用时间戳比较多,但是有时候新老项目或者开发人员格式不统一,可能会出现时间戳,或yyyy-MM-dd HH-mm-ss 甚至像这种时间 Thu, 27 Apr 2023 06:16:37 GMT(EEE, dd MMM yyyy HH:mm:ss zzz)。
在接口传递时总是会报错,时间类型转换异常。
我们可以通过实现Converter接口,自定义类型转换,直到转换正确返回。
代码如下:
@Component
public class DateConverter implements Converter<String, Date> {
@Override
public Date convert(String source) {
if(StringUtils.isBlank(source)){
return null;
}
try {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return format.parse(source);
} catch (ParseException e1) {
try {
SimpleDateFormat format2 = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.ENGLISH);
format2.setTimeZone(TimeZone.getTimeZone("GMT+8"));
return format2.parse(source);
} catch (Exception ignore) {
}
return new Date(Long.valueOf(source));
}
}
}