@DateTimeFormat不生效的解决方法(之一)
在做项目的时候需要将前端字符串类型的时间传递到后端,自动映射到Date类型的属性上:前端时间格式:后端时间类型:@DateTimeFormat(pattern="yyyy-MM-dd hh:mm:ss")//主要是限制前台的时间格式@JsonFormat(pattern = "yyyy-MM-dd h
在做项目的时候需要将前端字符串类型的时间传递到后端,自动映射到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小写的h。hh代表的范围为1-12.而我测试的时间为15:00:02,已经超过了12,而小写的h最大只能接受12的值,传入15就出错了,所以无法将String类型转为Date类型。
解决方法:
将@DateTimeFormat中的时间格式修改(h改为H):
我的问题成功解决,但出现失效有多种可能,得一个一个查找
更多推荐
所有评论(0)