@JsonFormat、@DateTimeFormat时间的转换问题
在JavaWeb 开发过程中,⽇期格式的数据传输问题需要注意。当前端传递的⽇期格式与后台需要的不⼀致时,请求会报错400,接下来我以常⽤的两个注解来讲述这类问题的解决。
1.引⼊@jsonFormat的依赖
<!--@JsonFormat依赖引⼊-->
<dependency>
<groupId>com.</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.7</version>
</dependency>
string转date的方法2.@JsonFormat注解的使⽤
其能将前端返回的时间按我们想要的⽇期格式传到后台
在属性上加注解@JsonFormat,其中参数:
pattern:你想要其转换的⽇期格式
timezone:是时间设置为东⼋区,避免时间在转换中差8个钟
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date studyDate;
3.如果注释注解@DateTimeFormat,前端传⼊则会会报错400,错误请求,原因是后端需要的是⽇期格式,但是前端给的是String,所以需要加注解@DateTimeFormat来将前端传来的String 转为 Date类型。
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date studyDate;
public TestEntity(String name, Date studyDate) {
this.name = name;
this.studyDate = studyDate;
}
总结:
@JsonFormat注解的作⽤是格式化时间类型数据传输时的格式,以⾃⼰想要的格式来展⽰⽇期,同时也设置时区,避免时间展⽰与想要的结果产⽣误差。
@DateTimeFormat注解作⽤则是将前端传来的字符串类型的⽇期转为后台需要的时间类型结果,不加此注解,请求会报错400,请求参数错误,对于此类错误要注意int类型数据传输也是⼀样。