@DateTimeFormat和@JsonFormat

一、@DateTimeFormat和@JsonFormat区别

相同点

  • 两个注解都可以作用到字段上
  • 都可以对接收和返回的时间字段进行格式化(网上有些文章此处就说错了)

不同点

  • @JsonFormat注解来源于jackson-databind-XXX.jar包中,SpringBoot项目引入spring-boot-starter-web时就会携带该jar包
  • @DateTimeFormat注解来源于spring-boot-XXX.jar包中,SpringBoot项目中会携带该jar包
  • 两个注解的使用场景不同

提示:@DateTimeFormat和@JsonFormat注解一般是针对于Date和LocalDateTime类型使用,LocalDate类型不需要使用

@DateTimeFormat

  1. 只能格式化前端传入的时间字符串转换成Date类型或LocalDateTime类型,不能格式化后端的日期字段给前端
  2. 仅支持前端使用表单键值对的请求提交方式(url拼接的参数才生效,如果是放到RequestBody中的form-data也是无效的)
  3. 不支持Json格式的请求提交方式(即不能格式化请求体中json参数)
  4. 适用于Get请求和Post请求

@JsonFormat

  1. 该注解既可以格式化前端传给后端的参数,也可以格式化后端传给前端的参数
  2. 仅支持Json格式的请求提交方式(即可以格式化请求体中json参数)
  3. 不支持前端使用表单键值对的请求提交方式(url拼接的参数无效)
  4. 适用于Get请求和Post请求

二、@DateTimeFormat和@JsonFormat的使用

@DateTimeFormat

@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date date;

 
 
  • 1
  • 2

@JsonFormat

@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
private Date date;

 
 
  • 1
  • 2

三、小结

根据上面的区别我们就很容易的区分处何时用哪个注解了吧,小面小结一下吧:

@DateTimeFormat

  1. 适用于GET请求中请求参数场景,因为GET请求是将参数添加到url后面的

@JsonFormat

  1. 适用于POST请求且请求参数是以json格式发送的场景
  2. 后端响应给前端的实体类中
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值