【重点】@JsonFormat 和 @DateTimeFormat 时间格式化注解详解

在前后端数据交互的过程中,Data类型的数据经常会出现类型映射转换的错误,为了达到业务的目标时间格式,通常会使用@JsonFormat 和 @DateTimeFormat 。我们今天就来看看这两者的区别!

@JsonFormat注解:

        作用:可以约束时间的接收格式和响应格式 (接收和响应的都是JSON字符串),将日期类型数据在JSON格式和java.util.Date对象之间转换。与传输方向没有关系(前端到后端or后端到前端都可以使用),注意因为我们是东八区(北京时间),使用时需要加上时区( timezone = “GMT+8”),不然所得值会比实际时间晚8小时。

@JsonFormat注解的两个属性

属性作用
pattern约定时间格式:pattern=“yyyy-MM-dd HH:mm:ss”
timezone

指定具体时区: timezone = “GMT+8” or timezone = “Asia/Shanghai”

接收时:当前端传入后端接口一个Date类型的参数,@JsonFormat注解 会自动将该参数转换为pattern属性约束的形式。

响应时:当实体类中的属性为Date类型,想要将实体类响应给前端时,该注解会自动将Date类型转换为pattern属性约束的形式。

注意:

1.因为我们是东八区(北京时间),使用时需要加上时区( timezone = “GMT+8”),不然所得值会比实际时间晚8小时。

2.当单独使用该注解时,需要先通过@RequestBody将入参参数映射到实体后,@JsonFormat注解才能去对时间格式进行约束;

@DateTimeFormat注解:

        主要处理前端时间类型与后端pojo对象中的成员变量进行数据绑定,所约束的时间格式并不会影响后端返回前端的时间类型数据格式;

当前端以提交表单的形式将Date数据提交到后端,后端可直接将数据转换为注解约束的形式;

但是当前端是以Json的形式将Date数据提交到后端,则必须要用@RequestBody注解进行接收,因为而 Spring 默认的转换器类型是不包含 JSON 的.

注意:前端入参数据的时间格式必须与注解中定义的时间格式相同,不然会报错,如:@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm”) 则入参的格式必须为"2020-6-4 10:43";

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值