SpringBoot全局时间类型转化
全局由String转Date
场景: 开发中前端常常传的日期类型是String的,而后端在存入数据库中的时候,是Date类型的,这时候我们通常都是手动转一下,或者在Converter中转一下,这样是比较麻烦的。 下面介绍一种简单的办法
1. 先自定义DateConverter
import org.apache.commons.lang.StringUtils;
import org.springframework.core.convert.converter.Converter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateConverter implements Converter<String, Date> {
private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
@Override
public Date convert(String s) {
if(StringUtils.isEmpty(s)) {
return null;
}
try {
return simpleDateFormat.parse(s);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
}
这个converter是将String转为Date类型的。
接着,我们将其加入到springMVC组件中去
2. 加入到SpringMVC
import org.springframework.context.annotation.Configuration;
import org.springframework.format.FormatterRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
public void addFormatters(FormatterRegistry registry) {
registry.addConverter(new DateConverter());
}
}
这样在前端传入String的时候,会默认的转为 Date类型
全局Date转为String
场景: 当我们使用@RestController时候,我们从数据库中查出来的Date类型数据,都会以Timestamp格式展示
解决办法:在application.yml中配置
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
这样就可以了