当前位置: 首页 > news >正文

解决 Spring Boot 返回日期格式问题

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 注解),因为它:

  1. 只影响特定字段

  2. 配置简单明了

  3. 不会影响其他日期字段的格式

如果项目中大部分日期字段都需要相同格式,则可以使用方法2进行全局配置。

注意事项

  • 确保你的项目中包含了 Jackson 依赖(Spring Boot web starter 默认包含)

  • 如果使用 Java 8 的日期时间 API(LocalDate 等),需要额外配置 JavaTimeModule

http://www.dtcms.com/a/113784.html

相关文章:

  • C 语言高级编程指南:回调函数与设计模式
  • 晶晨S905L3S/S905L3SB_安卓9.0_10秒开机_通刷-线刷固件包
  • vite 6.2.5 更新速递:告别SVG路径Bug,构建效率再提升!
  • bat_01_参数%*是什么功能?
  • 【7】搭建k8s集群系列(二进制部署)-master节点之配置kubectl客户端证书
  • 优化 Web 性能:避免第三方门面(Third-Party Facades)
  • Wireshark 安装保姆教程(图文详解)
  • 第3课:状态管理与事件处理
  • IntelliJ IDEA中Spring Boot 3.4.x+集成Redis 7.x:最新配置与实战指南
  • Drools项目实战
  • 第八课:在SD中安装拓展插件
  • 设计模式简述(四)模板方法模式
  • C#里使用libxl来改变字体的特性
  • AI Agent设计模式五:Orchestrator
  • form实现pdf文件转换成jpg文件
  • Spring Cloud 框架为什么能处理高并发
  • python基础-16-处理csv文件和json数据
  • 未来已来:探索AI驱动的HMI设计新方向
  • 动画过渡设置
  • 【JS】接雨水题解
  • 春季赛day15 Snailography
  • 铁电液晶(FLC)与反铁电液晶(AFLC)
  • SCADE One - 弥合基于模型设计与传统编程之间的鸿沟
  • 【学Rust写CAD】31 muldiv255函数(muldiv255.rs)
  • 设计模式简述(三)工厂模式
  • 《C语言代码解析与应用:数组操作的两种实现》
  • ctfshow VIP题目限免 版本控制泄露源码2
  • LeetCode详解之如何一步步优化到最佳解法:20. 有效的括号
  • 配置ASP.NET Core+NLog配置日志示例
  • 基于 FPGA 的分秒计数器