首先需要注意数据库连接中的时区配置
url: jdbc:mysql://localhost:3306/manman?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
可以看到,这里我使用的是上海时间,如果使用UTC(全球标准时间),我们在用java代码插入到数据库时间的时候容易出现了问题。
比如在java代码里面插入的时间为:2018-06-24 17:29:56
但是在数据库里面显示的时间却为:2018-06-24 09:29:56
有了8个小时的时差
这是因为UTC代表的是 全球标准时间,但是我们使用的时间是北京时区也就是东八区,领先UTC八个小时。
详细请看 https://blog.csdn.net/love20yh/article/details/80799610
后端向前端传递时间
以springboot为例,当mybatis和java实体类中都指定为date类型时,使用@responsebody或@restcontroller返回给前端的时间将为时间戳的形式
例如:
1472048779952 这种形式
如何解决?
加入JsonFormat的jar包
<!--JsonFormat-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.8.8</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.8</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
在实体类的get方法上使用@jsonformat注解,指定时区和匹配模式
//时区,编码格式
//@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
public Date getCreatetime() {
return createtime;
}
效果返回给前端形式为2019-07-10
详细请参考
https://blog.csdn.net/qq_28483283/article/details/81326365
https://www.cnblogs.com/mracale/p/9828346.html