核心异常内容
Pattern letter count must be 2: V at java.base/java.time.format.DateTimeFormatterBuilder.parsePatter
背景
我的Springboot工程使用FastJson2代替jackson
在实现WebMvcConfigurer的configureMessageConverters方法时,修改FastJSON2为MessageConverter。为了方便,我全局配置了日期格式转换规则,这样我无需在各个ResponseVO的日期类型的属性上写@JSONField(format = "yyyy-MM-dd HH:mm:ss")了。
但是直到有一天报错了。
BUG原因和解决办法
原因
我在设置格式的时候代码如下,我写了cn.hutool.core.date.DatePattern.NORM_DATETIME_FORMATTER.toString(),我以为它的值是"yyyy-MM-dd HH:mm:ss"
java
fastJsonConfig.setDateFormat(DatePattern.NORM_DATETIME_FORMATTER.toString());
但实际上它的值是"Value(YearOfEra,4,19,EXCEEDS_PAD)'-'Value(MonthOfYear,2)'-'Value(DayOfMonth,2)' 'Value(HourOfDay,2)':'Value(MinuteOfHour,2)':'Value(SecondOfMinute,2)"
解决办法
应该用DatePattern.NORM_DATETIME_PATTERN,它才是字符串"yyyy-MM-dd HH:mm:ss"。
总结
果然BUG大部分情况都是自己蠢造成的。