概述
一般我们在接口中将日期作为入参时,都喜欢格式化为yyyy-MM-dd HH:mm:ss字符串进行传输,因为这样看得比较直观。但是我们接口接收的字段又定义为Date类型,类型不一致,不能直接接收。所以就要进行转换,前后端才能适配上。
配置
- 针对不同的日期类型,配置不一样
1.java.util.Date
- 直接添加yml配置
spring.jackson.timeZone=GMT+8
spring.jackson.dateFormat=yyyy-MM-dd HH:mm:ss
这是一个全局配置,所有的接口,传入以及返回的日期会是yyyy-MM-dd HH:mm:ss格式
2.java.time.LocalDate & java.time.LocalDateTime
- 添加配置类
@Configuration
public class LocalDateConfig {
/**
* java.time.LocalDateTime转换器
* @return
*/
@Bean
public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
return builder -> builder
.serializerByType(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))
.deserializerByType(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))
.serializerByType(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")))
.deserializerByType(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")))
.serializerByType(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss")))
.deserializerByType(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
}
}