1. 格式化 LocalDateTime – @RequestBody
- 编辑配置类
@Configuration
public class JackConfig {
private static String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
@Bean
public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
return builder -> {
builder.serializerByType(Long.class, ToStringSerializer.instance);
builder.serializerByType(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DATE_TIME_PATTERN)));
builder.deserializerByType(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DATE_TIME_PATTERN)));
builder.simpleDateFormat(DATE_TIME_PATTERN);
builder.timeZone("GMT+8");
builder.serializationInclusion(JsonInclude.Include.NON_NULL);
};
}
}
2. 格式化LocalDateTime – @RequestParam
- 编写LocalDateTimeEditor
public class LocalDateTimeEditor extends PropertyEditorSupport {
public DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
@Override
public String getAsText() {
return super.getAsText();
}
@Override
public void setAsText(String text) throws IllegalArgumentException {
LocalDateTime dateTime = LocalDateTime.parse(text, formatter);
setValue(dateTime);
}
}
2.使用InitBinder 全局处理LocalDateTime类型
@RestControllerAdvice
public class GlobalController {
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(String.class, new StringTrimmerEditor(false));
binder.registerCustomEditor(LocalDateTime.class, new LocalDateTimeEditor());
}
}