使用【】反序列化yyyy-MM-dd HH:mm:ss格式日期失败

时间:2025-03-27 10:42:36

异常

: Cannot deserialize value of type `` from String "2022-06-21 00:00:00": not a valid representation (error: Failed to parse Date value '2022-06-21 00:00:00': Cannot parse date "2022-06-21 00:00:00": while it seems to fit format 'yyyy-MM-dd'T'HH:mm:', parsing fails (leniency? null))

解决方案

在你反序列化的java对象中Date类型的属性加上注解 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")

坑点

使用@JsonFormat(pattern="yyyy-MM-dd")转成Date对象会有八小时误差

扩展知识

yyyy-MM-dd’T’HH:mm: Z这种格式是ISO8601的规定的时间格式
其中T表示日期跟时间的分隔
SSS表示毫秒数
Z表示0时区
如果我们通过swagger构造入参时间属性时,可以通过浏览器控制台new Date().getTime(),这个将会返回一个时间戳(从1970年1月1日到现在的毫秒数),我们可以直接把这个数字作为时间属性,后端会将其转为对应的日期对象,比构造那么一个复杂格式的字符串要快速很多