springboot项目有个属性这样注解
@DateTimeFormat(pattern = "yyyy-MM-dd") private Date createTime;
表中是 `create_time` datetime DEFAULT NULL
只使用了 @DateTimeFormat
注解来处理输入格式,但没有配置输出格式。返回给前端还是 createTime: "2025-04-05T12:27:36.000+00:00" 而不是createTime: "2025-04-05" 。在 Spring Boot 中,返回给前端的日期格式需要另外配置。
解决方案
有以下几种方法可以解决:
方法1:使用 @JsonFormat
注解(推荐)
import com.fasterxml.jackson.annotation.JsonFormat;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date createTime;
方法2:全局配置(在 application.properties 或 application.yml 中)
对于 application.properties:
spring.jackson.date-format=yyyy-MM-dd
spring.jackson.time-zone=GMT+8
对于 application.yml:
spring:
jackson:
date-format: yyyy-MM-dd
time-zone: GMT+8
方法3:自定义 Jackson 配置
创建一个配置类:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.databind.SerializationFeature;
import java.text.SimpleDateFormat;
@Configuration
public class JacksonConfig {
@Bean
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));
return objectMapper;
}
}
推荐方案
推荐使用方法1(@JsonFormat
注解),因为它:
-
只影响特定字段
-
配置简单明了
-
不会影响其他日期字段的格式
如果项目中大部分日期字段都需要相同格式,则可以使用方法2进行全局配置。
注意事项
-
确保你的项目中包含了 Jackson 依赖(Spring Boot web starter 默认包含)
-
如果使用 Java 8 的日期时间 API(LocalDate 等),需要额外配置 JavaTimeModule