Skip to content

Instantly share code, notes, and snippets.

@codethereforam
Created November 6, 2019 11:46
Show Gist options
  • Save codethereforam/b782062297e881618bc6e92ef6ecee6c to your computer and use it in GitHub Desktop.
Save codethereforam/b782062297e881618bc6e92ef6ecee6c to your computer and use it in GitHub Desktop.
Spring LocalDateTime时间转换配置
/**
* 时间转换配置
*
* @author yanganyu
* @date 2019/9/23 17:05
*/
@Configuration
public class DateConvertConfig {
/**
* LocalDate转换器,用于转换RequestParam和PathVariable参数
*/
@Bean
public Converter<String, LocalDate> localDateConverter() {
return new Converter<String, LocalDate>() {
@Override
public LocalDate convert(String source) {
return LocalDate.parse(source, DateTimeFormatter.ofPattern(DateUtilsExt.yyyy_MM_dd));
}
};
}
/**
* LocalDateTime转换器,用于转换RequestParam和PathVariable参数
*/
@Bean
public Converter<String, LocalDateTime> localDateTimeConverter() {
return new Converter<String, LocalDateTime>() {
@Override
public LocalDateTime convert(String source) {
return LocalDateTime.parse(source, DateTimeFormatter.ofPattern(DateUtilsExt.yyyy_MM_dd_HH_mm_ss));
}
};
}
/**
* LocalTime转换器,用于转换RequestParam和PathVariable参数
*/
@Bean
public Converter<String, LocalTime> localTimeConverter() {
return new Converter<String, LocalTime>() {
@Override
public LocalTime convert(String source) {
return LocalTime.parse(source, DateTimeFormatter.ofPattern(DateUtilsExt.HH_mm_ss));
}
};
}
/**
* Json序列化和反序列化转换器,用于转换Post请求体中的json以及将我们的对象序列化为返回响应的json
*/
@Bean
public ObjectMapper objectMapper(){
ObjectMapper objectMapper = new ObjectMapper();
JavaTimeModule javaTimeModule = new JavaTimeModule();
javaTimeModule.addDeserializer(LocalDate.class,
new LocalDateDeserializer(DateTimeFormatter.ofPattern(DateUtilsExt.yyyy_MM_dd)));
javaTimeModule.addDeserializer(LocalDateTime.class,
new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DateUtilsExt.yyyy_MM_dd_HH_mm_ss)));
javaTimeModule.addDeserializer(LocalTime.class,new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DateUtilsExt.HH_mm_ss)));
javaTimeModule.addSerializer(LocalDate.class,
new LocalDateSerializer(DateTimeFormatter.ofPattern(DateUtilsExt.yyyy_MM_dd)));
javaTimeModule.addSerializer(LocalDateTime.class,
new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DateUtilsExt.yyyy_MM_dd_HH_mm_ss)));
javaTimeModule.addSerializer(LocalTime.class,new LocalTimeSerializer(DateTimeFormatter.ofPattern(DateUtilsExt.HH_mm_ss)));
//Date序列化和反序列化
javaTimeModule.addSerializer(Date.class, new JsonSerializer<Date>() {
@Override
public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
SimpleDateFormat formatter = new SimpleDateFormat(DateUtilsExt.yyyy_MM_dd_HH_mm_ss);
String formattedDate = formatter.format(date);
jsonGenerator.writeString(formattedDate);
}
});
javaTimeModule.addDeserializer(Date.class, new JsonDeserializer<Date>() {
@Override
public Date deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
SimpleDateFormat format = new SimpleDateFormat(DateUtilsExt.yyyy_MM_dd_HH_mm_ss);
String date = jsonParser.getText();
try {
return format.parse(date);
} catch (ParseException e) {
// 如果无法转换成带时间的,则转换成日期
try {
return new SimpleDateFormat(DateUtilsExt.yyyy_MM_dd).parse(date);
} catch (ParseException ex) {
throw new RuntimeException(ex);
}
}
}
});
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)
.registerModule(javaTimeModule)
.registerModule(new ParameterNamesModule())
.registerModule(new Jdk8Module());
return objectMapper;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment