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

Springboot绑定Date类型时出现日期转换异常问题

一、问题核心描述

在调用接口 /device/list 时,前端传递日期字段 addTime 的格式 2025-07-17 13:30:18,导致 Spring 类型转换失败,无法将字符串自动转为 Date 类型。

问题场景
  1. 请求类型GET 请求(使用 @ModelAttribute 绑定参数)
  2. 字段类型
    • 目标类型:Date
    • 传入值:字符串 "2025-07-17 13:30:18"
  3. 错误原因
Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'bindTime'

二、总结:日期格式化场景的解决方案

1. GET请求 + @ModelAttribute方式

解决方案: 使用 Spring的@DateTimeFormat

import org.springframework.format.annotation.DateTimeFormat;public class DeviceDto {@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")private Date addTime;
}
  • 前端传参格式: ?addTime=2025-07-17+14:30:45 (需要正确URL编码)
  • 兼容传统 Date 类型

@ModelAttribute 参数绑定 不依赖 Jackson@JsonFormat 无效)


2. POST请求 + @RequestBody方式 (JSON格式)

解决方案: 使用 Jackson的@JsonFormat

import com.fasterxml.jackson.annotation.JsonFormat;public class DeviceDto {@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")private Date addTime;
}
  • 前端传参格式:
    {"addTime": "2025-07-17 14:30:45"}
    

3. 对于 @DateTimeFormat 是否支持 POST JSON 的问题

** @DateTimeFormat 不能 用于 @RequestBody JSON 反序列化


使用建议总结

场景推荐方案前端传参示例
GET + URL参数@DateTimeFormat/path?addTime=2025-07-17 14:30
POST + 表单提交@DateTimeFormataddTime=2025-07-17+14%3A30%3A45
POST + JSON请求体@JsonFormat{"addTime":"2025-07-17 14:30"}
需要同时支持所有格式双注解+Java8 API任意格式

“表单数据用@DateTimeFormat,JSON数据用@JsonFormat,Java8时间类型是终极解决方案”

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

相关文章:

  • Springboot儿童摄影服务91f0v(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 【AI前沿】英伟达CEO黄仁勋ComputeX演讲2025|Token是AI时代的“新货币”
  • 时序数据库选型指南︰为什么IoTDB成为物联网场景首选?
  • 浅谈自动化设计最常用的三款软件catia,eplan,autocad
  • 2025前端与AI结合的最新趋势与应用场景
  • uni-app项目配置通用链接拉起ios应用android应用
  • Redis学习-03重要文件及作用、Redis 命令行客户端
  • 项目--五子棋(模块实现)
  • MATLAB电力系统暂态稳定分析
  • 掌握Git核心技巧:深入理解.gitignore文件的使用
  • 【Bluedroid】btif_a2dp_sink_init 全流程源码解析
  • 25.7.16 25.7.17 每日一题——找出有效子序列的最大长度 I/II
  • NumPy 数组存储字符串的方法
  • 「Linux命令基础」Shell常见命令
  • Qwen3-8B Dify RAG环境搭建
  • 从C#6天学会Python:速通基础语法(第一天)
  • 【面板数据】企业劳动收入份额数据集-含代码及原始数据(2007-2022年)
  • 模板方法设计模式
  • JUnit5 实操
  • 杭州卓健信息科技有限公司 Java 面经
  • CPP学习之list使用及模拟实现
  • 【39】MFC入门到精通——C++ /MFC操作文件行(读取,删除,修改指定行)
  • 闲庭信步使用图像验证平台加速FPGA的开发:第二十一课——高斯下采样后图像还原的FPGA实现
  • 在VsCode上使用开发容器devcontainer
  • 基于MATLAB的极限学习机ELM的数据分类预测方法应用
  • VSCode 配置 C# 开发环境完整教程(附效果截图)
  • 【后端】.NET Core API框架搭建(7) --配置使用Redis
  • java-字符串
  • 东芝2822AM复印机请求维修C449简单操作修复步骤
  • vue3 自定义vant-calendar header/footer/maincontent