不要在听大坑们@DateTimeFormat 和 @JsonFormat只是前后端传参的区别了

实在看不下去网上千篇一律的回答都是

@DateTimeFormat用于前端传给后端的时间格式转换,

@JsonFormat用于后端传给前端的时间格式转换
这种以偏盖全的荒谬理论真的是误人子弟!为此本人将自己调查理解的浅陋见解分享给大家,如有错误请大家多多指教

 

@JsonFormat注解

出处:   com.fasterxml.jackson.annotation.JsonFormat;

作用:将日期类型数据在JSON格式和java.util.Date对象之间转换。约束时间的接收格式响应格式 (接收和响应的都是JSON字符串) .与传输方向没有关系(前端到后端or后端到前端都可以使用)

常用注解属性:

名称作用
pattern时间格式:pattern=“yyyy-MM-dd HH:mm:ss”
timezone指定具体时区: timezone = “GMT+8” or timezone = “Asia/Shanghai”

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

举个例子
 

@Data
public class pojo{

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

@DateTimeFormat注解

出处:org.springframework.format.annotation.DateTimeFormat

作用:主要对Date、Calendar、Long及Joda时间类型的属性进行格式化处理,主要处理前端时间类型与后端pojo对象中的成员变量进行数据绑定,所约束的时间格式并不会影响后端返回前端的时间类型数据格式;

常用注解属性:

名称作用
iso类型为DateTimeFormat.ISO,常用值:
DateTimeFormat.ISO.DATE:格式为yyyy-MM-dd
DateTimeFormat.ISO.DATE_TIME:格式为yyyy-MM-dd hh:mm:ss.SSSZ
DateTimeFormat.ISO.TIME:格式为hh:mm:ss.SSSZ
DateTimeFormat.ISO.NONE:表示不使用ISO格式的时间(默认值)
pattern类型为String,使用自定义时间格式化字符串,如"yyyy-MM-dd hh:mm:ss"
style类型为String,通过样式指定日期时间的格式,由两位字符组成,
第一位表示日期的样式,第二位表示时间的格式,以下是几个常用的可选值:
S:短日期/时间的样式
M:中日期/时间的样式
L:短日期/时间的样式
F:完整日期/时间的样子
-:忽略日期或时间的样式
默认值 style=“SS”

注意事项:前端入参数据的时间格式必须与注解中定义的时间格式相同

举个例子:

@Data
public class query{

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

@JsonFormat 和 @DateTimeFormat 区别

  • @JsonFormat可以约束前端传入的时间类型参数格式可以约束后端响应前端的时间类型格式;与请求的数据类型有关,必须为json类型
    目前大部分java项目都是使用json的方式传输前后端数据(即前端使用json提交,后端使用@RequestBody注解接收参数的形式),使用 @JsonFormat即可
  • @DateTimeFormat只能约束前端传入的时间类型参数格式,且如果单独使用@DateTimeFormat时,响应给前端的时间会比实际时间晚8个小时(时区原因)。
       仅支持**【表单键值对】**这种提交方式,而且只能格式化前端->后端数据,不能用于json格式的提交方式,也不能用于后端->前端的格式化

 

 

### 回答1: @datetimeformat@jsonformat是Spring Boot中的注解,用于格式化日期时间以及JSON数据的输出格式。 @datetimeformat注解可以用于将日期时间格式化为指定的格式,例如: ```java @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; ``` 这将把createTime字段格式化为"yyyy-MM-dd HH:mm:ss"的日期时间格式。 @jsonformat注解可以用于指定JSON数据的输出格式,例如: ```java @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createTime; ``` 这将把createTime字段格式化为"yyyy-MM-dd HH:mm:ss"的日期时间格式,并且时区为GMT+8。 使用这些注解可以方便地控制日期时间的格式化以及JSON数据的输出格式,提高代码的可读性可维护性。 ### 回答2: @datetimeformat@jsonformat都是Spring Boot框架中的注解。 @datetimeformat是一个用于格式化日期时间的注解,在Spring MVC的表单处理器@ResponseBody方法中经常使用。该注解可以将输入的字符串转换为Java Date类型,并将输出的日期格式化为指定的格式。例如,我们可以使用@datetimeformat("yyyy-MM-dd HH:mm:ss")将接收到的字符串转换为yyyy-MM-dd HH:mm:ss格式的日期类型。 @jsonformat是一个用于格式化JSON数据的注解。它可以在Java对象序列化为JSON格式时,指定日期类型、数字类型、布尔类型等数据类型的格式化方式。例如,我们可以使用@jsonformat(pattern="yyyy-MM-dd HH:mm:ss")将Date类型转换为yyyy-MM-dd HH:mm:ss格式的字符串,以便在前端以JSON格式显示。 除了格式化日期时间之外,@datetimeformat@jsonformat还可以用于其他数据类型的格式化。例如,@datetimeformat可以用于格式化国际化货币、数字格式,而@jsonformat可以用于格式化枚举类型、BigDecimal类型等。 总之,@datetimeformat@jsonformat都是非常实用的注解,可以帮助我们轻松地格式化日期、时间其他数据类型,让我们的代码更加清晰、易读易懂。 ### 回答3: 两个注解的作用都是将数据格式化后输出。 @datetimeformat主要用于格式化日期类型的数据,可以将日期类型转化为指定的格式输出。使用该注解需要在实体类中的日期字段上添加注解,指定日期格式,例如: ``` @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date createTime; ``` @jsonformat则用于将对象转化为JSON格式输出。使用该注解需要在实体类的字段上添加注解,指定JSON格式的日期格式、数字格式、对象格式等,例如: ``` @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8") private Date createTime; ``` 这样,在通过JSON格式输出该对象时,createTime字段将会按照指定的格式进行格式化输出。 这两个注解在实际开发中非常常用,可以使得输出的数据更加规范易读。特别是在前后端分离的开发中,JSON格式的数据交互更是必不可少。因此,掌握这两个注解的使用是Java开发工程师必须具备的基本技能之一。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

*阿莫西林*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值