JSON parse error: Cannot deserialize value of type `java.util.Date` from String "2018-10-19 21:33:16":
not a valid representation (error: Failed to parse Date value '2018-10-19 21:33:16':
Cannot parse date "2018-10-19 21:33:16": while it seems to fit format 'yyyy-MM-dd'T'HH:mm:ss.SSSZ',
parsing fails (leniency? null)); nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.util.Date` from String "2018-10-19 21:33:16": not a valid representation (error: Failed to parse Date value '2018-10-19 21:33:16': Cannot parse date "2018-10-19 21:33:16": while it seems to fit format 'yyyy-MM-dd'T'HH:mm:ss.SSSZ', parsing fails (leniency? null))
at [Source: (PushbackInputStream); line: 1, column: 141]
前端传日期字符,后台接收时报错如上,其它方法都不凑效,只有重写fasterxml里的日期转换类才能实现不同日期字符的转换。具体代码见GlobalJsonDateConvert。其它方法如下,只用作参考。yarm不配置jackjson,默认只能转换
'yyyy-MM-dd'T'HH:mm:ss.SSSZ'这种格式。如果想各种日期都能转换就需要重写StdDateFormat类的parse方法。Date转换器执行有优先级,另一个方法是调整转换器的优先级。
1. SpringBoot设置后台向前台传递Date日期格式
在springboot应用中,@RestController
注解的json默认序列化中,日期格式默认为:2020-12-03T15:12:26.000+00:00
类型的显示。
在实际显示中,我们需要对其转换成我们需要的显示格式。
1.1 方式1:配置文件修改
配置文件配置application.yml
:
1 2 3 4 5 |
|
application.properties
配置方式
1 2 |
|
【注意】这里需要修改时区time-zone
:数据库默认时区是格林尼治的时间,如果不设置,会比实际时间少8个小时(北京时间)。
1.2 方式2:在javabean实体类上加注解
I. @JsonFormat
注解
@JsonFormat
注解用于属性或方法上,将Date
类型转换为我们需要的类型显示。
1 2 3 |
|
II. @DateTimeFormat
注解
在需要进行日期格式转换的Date属性上添加注解
@DateTimeFormat(pattern = "需要转换的格式")
1 2 3 |
|
III. @Temporal
注解
通过@Temporal注解,实现日期格式转换,它自带属性参数,比如:
@Temporal注解参数 | 作用 |
---|---|
TemporalType.DATE | @Temporal(TemporalType.DATE),会得到yyyy-MM-dd格式的日期形式。 |
TemporalType.TIME | @Temporal(TemporalType.TIME),会得到HH:MM:SS格式的时间形式。 |
TemporalType.TIMESTAMP | @Temporal(TemporalType.TIMESTAMP),会得到yyyy-MM-dd hh:MM:ss格式的日期时间形式。 |
1 2 |
|
2. SpringBoot配置全局日期格式转换器
配置从页面接收的String和json格式的日期转换为Date类型。
2.1 配置String类型表单传参转Date的转换器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
|
2.2 配置Json数据转Date的全局日期转换器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
|
2.3 配置bean交给Spring管理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
//这二句很重要
|