java处理前端UTC时间等(springboot项目)
场景
前端传的UTC时间yyyy-MM-dd’T’HH:mm:ss.SSS’Z’,或者其他时间的时候,java后台全局转换时间字符串为Date类型或者LocalDateTime类型
一是SpringMVC的针对application/x-www-form-urlencoded表单请求使用转换器设置全局转换
@Component
public class StringToDateConverter implements Converter<String, Date> {
private static final List<String> formarts = new ArrayList<>(4);
static{
formarts.add("yyyy-MM");
formarts.add("yyyy-MM-dd");
formarts.add("yyyy-MM-dd hh:mm");
formarts.add("yyyy-MM-dd hh:mm:ss");
formarts.add("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
}
@Override
public Date convert(String source) {
String value = source.trim();
if ("".equals(value)) {
return null;
}
if(source.matches("^\\d{4}-\\d{1,2}$")){
return parseDate(source, formarts.get(0));
}else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")){
return parseDate(source, formarts.get(1));
}else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}$")){
return parseDate(source, formarts.get(2));
}else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")){
return parseDate(source, formarts.get(3));
}else if (source.contains("T")) {
try{
return parseDateZone(source, formarts.get(4), ZoneId.of("UTC"));
} catch (Exception e) {
throw