@DateTimeFormat和@JsonFormat都是处理时间格式化问题的,把其他类型转换成自己需要的时间类型。
@DateTimeFormat和@JsonFormat分别属于spring和jackson,所以我们需要导入相应的包。
xml<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.11.4</version>
<type>bundle</type>
</dependency>
时间格式化 @DateTimeFormat是spring包里面的注解 @JsonFormat是jackson包里面的注解
@DateTimeFormat(pattern = “yyyy-MM-dd”) @JsonFormat(pattern = “yyyy-MM-dd”,timezone=“GMT+8”) private Date birthday; 注:默认情况下timezone为GMT(即标准时区),而北京是在东八区,会造成差8小时,所以 timezone =“GMT+8”。
来源的包不同,作用也不同: @DateTimeFormat是spring包里面的注解,对于form请求有效,不会格式化返回值 @JsonFormat是jackson包里面的注解,对json类型请求有效,会格式化返回值
yyyy-MM-dd HH:mm
代表年月日时分秒,比如:2020-11-26 16:01:01;我们需要根据实际存储的数据来定义pattern的值。 如果 pattern = “yyyy-MM-dd HH:mm”,那么前端传递的必须是年月日时分秒的字符串,否则抛出异常。 如果 pattern = “yyyy-MM-dd 01:03:03”,那么前端传递的必须是带时分秒,并且是01:02:03的字符串,否则抛出异常。 如果 pattern = “yyyy-MM-dd”,前端传递的参数带不带时分秒都是可以的,并且时分秒会被格式化为00:00:00。 一般我们需要什么数据,就在pattern里面定义好就可以了。@JsonFormat注解和@DateTimeFormat注解分别在JSON、FORM类中请求成功的案例是一样的,区别在于@JsonFormat会对返回数据进行格式化处理。
之前有个说法: @DateTimeFormat:管理输入数据格式 @JsonFormat:管理返回结果格式 经测试这个说法不完全对,@JsonFormat确实管理返回结果格式,但是输入数据格式是由两个注解相辅相成进行处理的。 建议使用时,两个注解写一样的格式化类型
本文作者:Weee
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!