理解和使用@DateTimeFormat和@JsonFormat注解
详细的理解参照
https://blog.csdn.net/qq_28483283/article/details/81326365
两者使用时,都要注意!自己想要的时间类型是什么样的,如果只是用到日期到天,那么格式就是(pattern=”yyyy-MM-dd”),想要时分秒的话,那么就要加上HH:mm:ss,因为前后台都需要传数据,所以需要保持一致,否则就会报错误,比如:日志管理的时候,我没有加时分秒,但是我页面传递了时分秒,所以导致数据进入后台时分秒是00:00:00,就会导致同一天的数据查询为空的bug,注意
@JsonFormat、@JSONField、@DateTimeFormat的使用以及其区别
1、JsonFormat来源于jackson,Jackson是一个简单基于Java应用库,Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。Jackson所依赖的jar包较少,简单易用并且性能也要相对高些,并且Jackson社区相对比较活跃,更新速度也比较快。
2、JSONField来源于fastjson,是阿里巴巴的开源框架,主要进行JSON解析和序列化。
3、DateTimeFormat是spring自带的处理框架,主要用于将时间格式化。
@DateTimeFormat使用方法:
我们可以使用@DateTimeFormat注解将一个字符串转成一个Date对象,pojo类上的哪个Date类型的字段需要,就需要用@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") 标记,这样前端页面传递过来的String类型的时间 '2016-11-11 11:11:11' 会转换为 Date 类型
原因是:页面将数据传到后台,是以字符串的形式。所以时间格式会出错。加上此注解,后台可解析时间格式的字符串。
但需要注意一下事项:
1.如果是小写的hh,那个值代表着1-12,比如,我是在下午16:30传入参数的,而小写的h最大只能接受12的值,传入16就出错了,所有无法将String转为Date类型。
2. 可以使用在字段上也可以使用在方法中。如: public String
test2(@RequestParam("uid") int id,
@DateTimeFormat(pattern="yyyy-MM-dd")Date date,
UserInfo user) {}
3.需要导入joda-time.jar包,maven的配置方式为:
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.9.6</version>
</dependency>
4.需要启动mvc中的注解驱动 <mvc:annotation-driven />
xmlns:mvc="http://www.springframework.org/schema/mvc"
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 启用mvc中的注解驱动 -->
<mvc:annotation-driven></mvc:annotation-driven>
@JsonFormat
但是后台传到前台,前台没办法解析。需要做如下操作。
@JsonFormat(pattern=”yyyy-MM-dd”)
用法 为在属性值上 @JsonFormat(pattern=”yyyy-MM-dd”,timezone=”GMT+8”),如果直接使用 @JsonFormat(pattern=”yyyy-MM-dd”)就会出现2018-08-01 08:00:00的情况, 会相差8个小时,因为我们是东八区(北京时间)。所以我们在格式化的时候要指定时区(timezone )