本博客由芙蓉学姐独家赞助

理解和使用@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 )

 

posted @ 2019-03-23 11:18  java入门到无敌  阅读(24070)  评论(0编辑  收藏  举报