在之前做项目的时候,遇到一个烦恼的问题,从mongo里面读出来的时间类型,在实体类里面用Date接收,然后将bean传给前端的时候json中是Sun Apr 28 16:02:56 CST 2019
这么显示的,但是前端要的是2019-4-28 16:02:56
这样子的显示格式,而且mongo中的时间类型的时区转换到实体类里面还不一样,那就在后端处理吧,写个for循环,然后转换时区,转换格式,吭哧吭哧的处理。我恨啊,没有早知道这个注解,要不然得省我多少事儿。下面就揭开这个注解神秘的面纱。
主要就是解决实体类和json之间互相转换的时候时间类型格式和时区不一致的问题,当然也可以用在枚举中和集合里面,这里不做过多阐述。
首先我这里写个实体类
public class Param {
private Date date;
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
这是这个实体类json格式显示
{
"date": "2019-04-28T08:18:21.554+0000"
}
对实体类稍微修饰了一下,加上了格式转换
public class Param {
@JsonFormat(shape = JsonFormat.Shape.STRING , pattern = "yyyy-MM-dd HH:mm:ss")
private Date date;
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
显示是这样子的
{
"date": "2019-04-28 08:24:14"
}
下一个(统一把get set方法去掉了,看着麻烦)
public class Param {
@JsonFormat(shape = JsonFormat.Shape.NUMBER)
private Date date;
}
{
"date": 1556440065032
}
这里是转换时区,加上了时区UTC
public class Param {
@JsonFormat(shape = JsonFormat.Shape.STRING , pattern = "yyyy-MM-dd HH:mm:ss", , timezone = "UTC")
private Date date;
}
{
"date": "2019-04-28 08:30:47"
}
我测试的时候每次返回的都是现在的时间,但是现在的时间是16点多,但是一直显示的是早上八点多,所以我看了下里面的代码,发现用了这个注解以后默认的时区就是UTC,所以用这个注解的时候要进行时区转换。
/** * {@link java.util.TimeZone} to use for serialization (if needed). * Special value of {@link #DEFAULT_TIMEZONE} * can be used to mean "just use the default", where default is specified * by the serialization context, which in turn defaults to system * default (UTC) unless explicitly set to another timezone. */
public String timezone() default DEFAULT_TIMEZONE;
之后我获取了下咱们现在的时区
public static void main(String[] args) throws IOException {
TimeZone aDefault = TimeZone.getDefault();
System.out.println(aDefault.getID());
//输出结果 Asia/Shanghai
}
然后将时区重新设置成Asia/Shanghai
public class Param {
@JsonFormat(shape = JsonFormat.Shape.STRING , pattern = "yyyy-MM-dd HH:mm:ss", , timezone = "Asia/Shanghai")
private Date date;
}
现在时间就是咱们的北京时间了,16点多。
{
"date": "2019-04-28 16:45:22"
}
经过这样子的处理以后,我就不怕实体类中时间数据类型和json之前互相转换的时候还要单独的对时间进行大量的处理了。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_44130081/article/details/89641301
内容来源于网络,如有侵权,请联系作者删除!