@DateTimeFormat不生效的解决方法(之一)

         在做项目的时候需要将前端字符串类型的时间传递到后端,自动映射到Date类型的属性上:
前端时间格式:
前端时间格式
后端时间类型:
在这里插入图片描述

@DateTimeFormat(pattern="yyyy-MM-dd hh:mm:ss")//主要是限制前台的时间格式
    @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss",timezone = "GMT+8")//主要是控制后台到前台的时间格式
    private Date createTime;

        可以看到为了防止类型无法转换已经提前加上了@DateTimeFormat注解,但是令人脑溢血的是还是报了如下错误:
Failed to convert property value of type ‘java.lang.String’ to required type ‘java.util.Date’ for property ‘createTime’;,还是出现无法将String转换为Date类型,很无语!!!

原因:
        我在进行测试的时候使用的时间为:2022-04-12 15:00:02,可以看到这个数据的小时数已经超过12,而我的@DateTimeFormat   注解规定的时间格式为yyyy-MM-dd hh:mm:ss 可以看到小时使用的是hh小写的hhh代表的范围为1-12.而我测试的时间为15:00:02,已经超过了12,而小写的h最大只能接受12的值,传入15就出错了,所以无法将String类型转为Date类型。

解决方法:
        将@DateTimeFormat中的时间格式修改(h改为H):
在这里插入图片描述

        我的问题成功解决,但出现失效有多种可能,得一个一个查找

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值