前后端时间传递之注解形式(@DateTimeFormat与@JsonFormat)

一、前言

在我们开发的过程中常常会遇到前后端传递时间的问题,同样遇到了这样的问题,以前的做法是在代码中转换:前端传String类型的时间,然后后端用String接收以后存入数据库时再转化为Date;返回给前端时也是一样,先从数据库中查出Date类型的数据,返回给前端时转化为String,非常麻烦。后来也是看到了用注解的方式非常方便,在这里记录并共享一下。

二、前端传后端(@DateTimeFormat)

前端给后端传递时间参数的时候传递的都是String类型的数据,后端如果用数据库类型Date来接收的话,则会报
异常。此时后端如果在对应的时间字段上加上 @DateTimeFormat 注解,就可以解决这个问题,而且在存入数据库
的时候依然用这个字段,而不用再进行类型转化。

2.1 场景

前端传过来的时间参数为String类型的数据的时候,就可以用如下的注解方式去接收数据,需要注意的是,注解中
的样式如果为yyyy-MM-dd HH:mm:ss的话,前端穿的时候必须是这样的格式,如果前端只传yyyy-MM-dd的话,就
会报异常。

2.2 例子

//此时库里datetime类型的数据可以用Date类型直接进行存储
  @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 private Date createTime;

@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 private Date updateTime;

注意:这里的Date是在java.util.Date;这个包下面的,不要引用错误了。

三、后端传前端

3.1 场景

后端传递给前端去展示时间的时候也是将时间转化为String类型的时间数据去返回。此时就需要加上 @JsonFormat
注解来解决这个问题。

3.2 例子

//这里就可以根据前端需要展示的时间格式进行返回,修改patter样式即可
 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 private Date createTime;

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",locale = "zh", timezone = "GMT+8")
 private Date updateTime;

注意:这里的这个注解是在com.fasterxml.jackson.annotation.JsonFormat;这个包下的。并且时区记得加上,不然时间会少八个小时。

参考链接:

https://cloud.tencent.com/developer/article/2304823

posted @ 2024-07-11 14:19  xudong5273  阅读(281)  评论(0)    收藏  举报