在JavaWeb 开发过程中,日期格式的数据传输问题需要注意。当前端传递的日期格式与后台需要的不一致时,请求会报错400,接下来我以常用的两个注解来讲述这类问题的解决。
1.引入@jsonFormat的依赖
<!--@JsonFormat依赖引入--> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.9.7</version> </dependency>
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类型数据传输也是一样。