org.springframework.format.annotation.DateTimeFormat 注解不生效的问题

本文介绍了在使用SpringBoot时遇到的@DateTimeFormat注解无法将时间字符串转换为Date对象的问题。通过复现问题和测试,发现在表单提交时@DateTimeFormat不工作。最终发现解决方案在于时间格式的细节,将hh改为HH后成功解决了问题。此问题涉及到日期时间格式处理和JSON序列化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、问题场景

在实体当中有java.util.Date类型的属性时,为了约定前端传值的格式和返回值给前端的格式,我们通常会分别用到@DateTimeFormat注解和@JsonFormat注解。

但是今天使用的时候,却出现了@DateTimeFormat不生效的问题,不能将接收到的时间格式字符串转成Date对象。

@DateTimeFormat(pattern = "yyyy-MM-dd hh:mm:ss")

二、问题复现与测试

 post请求,form-data的传参方式,但是在时间字段上却抛出属性值转换错误的异常。

然后经过测试,将时间字段值放在请求参数中,可以请求成功:

虽然这样是可以请求成功,但是却不能放在form-data里面,那表单提交还单独提交时间不成,属实是有点阴间的。

三、问题解决

也曾想过是格式的问题,或者springboot版本的问题,尝试过传值的格式,比如这样

2022-05-13T15:17:30

或者是不是JsonFormat注解的时区影响之类。

一番尝试还是未能成功。

最终偶然看到时间格式的设置,将里面的hh换成了HH:

原来的:
@DateTimeFormat(pattern = "yyyy-MM-dd hh:mm:ss")
现在的:
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")

竟然成功了。 

也没想到和这个格式设置有关。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值