时间相差8小时
查询数据库时区配置:
show variables like '%time_zone%';
如果 system_time_zone 为 CST 表示此时数据库中设置的时区非东八区。
命令修改时区:
set global time_zone = '+08:00';
set time_zone = '+08:00';
直接修改数据配置文件:
在配置文件 my.conf 或 my.ini中添加 default-time-zone = '+08:00'。重启数据库
或者修改项目数据库连接url:url后面拼上: &serverTimezone=GMT%2B8
spring.datasource.url=jdbc:mysql://localhost:3306/lyf?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8&useSSL=true
这样存储到数据的数据就会以东八区的时间存储
北京时间=GMT时间+8小时。GMT:格林尼标准时间
GMT时间就是英国格林威治时间,也就是世界标准时间,是本初子午线上的地方时,是0时区的区时,与我国的标准时间北京时间(东八区)相差8小时,即晚8小时。
UTC,即协调世界时。UTC是以原子时秒长为基础,在时刻上尽量接近于GMT的一种时间计量系统。为确保UTC与GMT相差不会超过0.9秒,在有需要的情况下会在UTC内加上正或负闰秒。UTC现在作为世界标准时间使用。所以,UTC与GMT基本上等同,误差不超过0.9秒。
在数据库连接url使用serverTimezone的情况:
serverTimezone=GMT 结果不正常
serverTimezone=GMT%2B8 结果正常
返回json时间变为毫秒数
在application.properties中配置
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
在返回的实体类对象get时间的方法上加上:
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
public Timestamp getCreateDate() {
return createDate;
}