在做项目的时候需要将前端字符串类型的时间传递到后端,自动映射到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):
在这里插入图片描述

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

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐