針對LocalDateTime日期格式化解決方案


前兩天做項目,后端返回給前端的數據中日期時間格式如下:

image

並不是我想要的yyyy-MM-dd HH:mm:ss格式的,所以網上搜了一下有一個JSON日期LocalDateTime序列化器(如果是Date類型,有其他方式解決),我們只需要在配置類中加入此配置即可

先導包

 <!-- json序列化 -->
<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
	<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
	<groupId>com.fasterxml.jackson.datatype</groupId>
	<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>

<!--json-->
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>fastjson</artifactId>
	<version>1.2.28</version>
</dependency>
<dependency>
	<groupId>org.json</groupId>
	<artifactId>json</artifactId>
	<version>20170516</version>
</dependency>

配置類

package com.qbb.srb.base.config;

import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * @author QiuQiu&LL (個人博客:https://www.cnblogs.com/qbbit)
 * @version 1.0
 * @date 2022-04-05  17:39
 * @Description:
 */
@Configuration
public class LocalDateTimeSerializerConfig {
    @Value("${spring.jackson.date-format:yyyy-MM-dd HH:mm:ss}")
    private String pattern;

    public LocalDateTimeSerializer localDateTimeDeserializer() {
        return new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(pattern));
    }

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

測試一下:
image

可以發現上面的是好使的,但是問題來了,上面配置類形式的相當於全局設置,只要是LocalDateTime都是以這種格式展示了,那我現在想帶點個性化,比如我只要年月日怎么辦:yyyy-MM-dd?好辦

我們只需要在相應的實體類上加入注解即可,例如:

@ApiModelProperty(value = "創建時間")
@JsonFormat(pattern = "yyyy-MM-dd")
// @DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDateTime createTime;

注意:這里的@DateTimeFormat控制的是前端傳遞過來的日期格式數據我們使用什么格式來序列化,而@JsonFormat則是以什么格式序列化傳遞給前端!! 一個對內,一個對外

image


免責聲明!

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



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