Spring Boot(十二):LocalDateTime格式化處理


Java 8之后,日期類的處理建議使用java.time包中對應的LocalDateTime, LocalDate, LocalTime類。(參考Java8新特性)

 

在Spring Boot中(驗證版本:2.1.5.RELEASE),日期類的序列化格式可能不是自己所希望的,需要定義為自己的格式。有兩種方式實現。

 

1. 注解方式

分別使用 @JsonFormat, @DateTimeFormat 來定義序列化(bean轉json)與反序列(json轉bean)時的格式,如

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime dateTime;

 

 

2. 統一配置方式

定義一個配置類,對ObjectMapper對象進行定制,指定日期類對應的序列化與反序列化處理對象,如

@Configuration
public class LocalDateTimeFormatConfig {
private static final String DEFAULT_DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
private static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd";
private static final String DEFAULT_TIME_PATTERN = "HH:mm:ss";

@Bean
@Primary
public ObjectMapper objectMapper(){
ObjectMapper objectMapper = new ObjectMapper();
JavaTimeModule javaTimeModule = new JavaTimeModule();
javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_PATTERN)));
javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_PATTERN)));
javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_PATTERN)));
javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_PATTERN)));
javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_PATTERN)));
javaTimeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_PATTERN)));
objectMapper.registerModule(javaTimeModule);
return objectMapper;
}
}

 

3. 總結

注解的方式需要在每個屬性上進行標注,如果日期類屬性較多則較為繁瑣,自定義配置類方式可以對日期進行統一的格式化處理。兩者都存在的情況下,以注解為准,即注解方式會覆蓋統一配置方式。

 


 

歡迎關注我的微信公眾號,及時獲取最新分享


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM