在网上看了很多,大部分人就是复制粘贴解释,如下
-- @JsonFormat(timezone = "GMT+8",pattern="yyyy-MM-dd")
timezone:时区,设置为东八区,避免时间在转换中有误差
pattern:要转换成的时间格式
说明:@JsonFormat注解,可以置于属性上方,也可以置于属性对应get方法上方。
@JsonFormat:主要是后台到前台的时间格式的转换
@DateTimeFormat:主要是前后到后台的时间格式的转换
真的服了,真希望各位在发文章时能自己试试在发布,几个人发错了,一群人全都复制粘贴转载,错的人越来越多,害…
今天在写接口时发现问题,前端传给后端的数据我用 @DateTimeFormat
并没有得到我想要的类型数据
直接贴图:
可以看到访问直接报错,原以为是会把数据的时分秒给截掉
再看下面
访问成功!
多次尝试后得出结论:
1.@DateTimeFormat 并不会根据得到其属性 pattern 把前端传入的数据转换成自己想要的格式,而是将前端的String类型数据封装到Date类型;其次它的 pattern 属性是用来规范前端传入数据的格式
2.@DateTimeFormat 它用于前端日期String数据提交封装到日期Date数据类型中
@JsonFormat 测试
可以看到时间参数的时间被改成了 00:00:00,8时是时区问题。
放行后可以看到返回的数据被截取了,按照其 pattern 属性设置规则截取
结论:
1.@JsonFormat 会对前端传来的数据进行处理,按照其 pattern 属性定义把传入的数据多余的补0
2.@JsonFormat 同样会对后端传给前端的数据进行处理,按照其 pattern 属性定义直接进行截取返回给前端
总结:
1.@JsonFormat 和 @DateTimeFormat 用于String类型对Date类型的封装
2.@JsonFormat t同时会对后端数据传给前端Json字符串日期截取,
按照其 pattern 属性定义截取
3.前端JSON字符串yyyy-MM-dd HH:mm:ss 类型想要封装给LocalDateTime类型
需要用@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
4.Date类型前端不能直接传 yyyy-MM-dd HH:mm:ss 格式字符串,
但是可以直接传 yyyy-MM-dd 格式,数据库会存储带补全的时分秒数据
暂时就是这样,菜鸡一个,如果有问题欢迎大家指正、交流!