一、 解决问题
支持LocalDateTime,LocalDate等全局格式化,具体格式化见文末:
1、接受参数格式化
2、返回参数格式化
3、字段上不需要加 @JsonFormat来格式化,不需要任何注解
二、引入依赖
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.9.8</version>
</dependency>
三、配置文件
@Configuration
@ConditionalOnClass(ObjectMapper.class)
@AutoConfigureBefore(JacksonAutoConfiguration.class)
public class DateAndTimeFormatConfig {
@Bean
public Jackson2ObjectMapperBuilderCustomizer customizer() {
return builder -> {
builder.locale(Locale.CHINA);
builder.timeZone(TimeZone.getTimeZone(ZoneId.systemDefault()));
builder.simpleDateFormat(DatePattern.NORM_DATETIME_PATTERN);
builder.modules(new JavaTimeModule ());
};
}
}
四、格式要求
/**
* @author mq
* @version v1.0
* @program ph-parent
* @create 2021/9/2 10:43
*/
public class JavaTimeModule extends SimpleModule {
public RyomaJavaTimeModule() {
super(PackageVersion.VERSION);
this.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)));
this.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)));
this.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_TIME_PATTERN)));
this.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)));
this.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)));
this.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_TIME_PATTERN)));
}
}
到此就结束了
注:
//对应的格式
DatePattern.NORM_DATETIME_PATTERN:"yyyy-MM-dd HH:mm:ss"
DatePattern.NORM_DATE_PATTERN:"yyyy-MM-dd"
DatePattern.NORM_TIME_PATTERN:"HH:mm:ss"