异常
com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.util.Date` 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:ss.SSSZ', 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:ss.SSS Z这种格式是ISO8601的规定的时间格式
其中T表示日期跟时间的分隔
SSS表示毫秒数
Z表示0时区
如果我们通过swagger构造入参时间属性时,可以通过浏览器控制台new Date().getTime(),这个将会返回一个时间戳(从1970年1月1日到现在的毫秒数),我们可以直接把这个数字作为时间属性,后端会将其转为对应的日期对象,比构造那么一个复杂格式的字符串要快速很多

本文探讨了Jackson库在反序列化过程中遇到的日期格式问题,提出在Date类型属性上使用@JsonFormat注解解决`2022-06-2100:00:00`格式错误,并强调了使用`yyyy-MM-dd HH:mm:ss`格式的重要性,以及避免八小时误差的方法。
555

被折叠的 条评论
为什么被折叠?



