SpringBoot中對LocalDateTime進行格式化

首先第一點需要知道的是springboot默認依賴的json框架是jackson。當使用@ResponseBody註解返回json格式數據時就是該框架在起作用。

在這裏插入圖片描述
如果字段屬性是Date而非LocalDateTime時,通常我們會在application.properties裏面配置如下:

spring.mvc.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
spring.jackson.serialization.write-dates-as-timestamps=false

如下圖所示,spring.jackson開頭的配置會被JacksonProperties類獲取進行使用。當返回json格式的時候,Jackson就會根據配置文件中日期格式化的配置對結果進行處理。
在這裏插入圖片描述


但是如果字段屬性爲LocalDateTime呢?這種配置就失去了作用。

這時候建議配置如下:

/**
 * Created by jianggc at 2020/7/1.
 */
@Configuration
public class LocalDateTimeSerializerConfig {

    @Value("${spring.jackson.date-format:yyyy-MM-dd HH:mm:ss}")
    private String pattern;

    // localDateTime 序列化器
    @Bean
    public LocalDateTimeSerializer localDateTimeSerializer() {
        return new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(pattern));
    }

    @Bean
    public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
        return builder -> builder.serializerByType(LocalDateTime.class, localDateTimeSerializer());
    }

}

這種配置方式自然是全局的,如果想針對某個字段特殊處理,可以在類字段上面添加註解@JsonFormat:

    @JsonFormat(pattern="yyyy-MM-dd")
    private LocalDateTime createTime;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章