前言

写项目时,发现数据库中时间快了8h,通过查阅,有多种解决方案,可以参考下边的两篇不错的文章:

Java、Mysql时区问题(常见的8小时偏差)

spring boot @ResponseBody转换JSON 时 Date 时间相差8小时出现的问题及其解决方法

解决方案

下边是方法的总结,更详细的可以看参考文章

1.修改 MySQL 时区

方法一:命令行修改(MySQL 重启失效)

1
set GLOBAL time_zone = '+8:00';

方法二:修改 MySQL 配置文件(永久生效)

1
2
3
[mysqld]
// 设置默认时区
default-time_zone='+8:00'

2.修改 SpringBoot 中配置

方法一:jdbc 连接时指定时区

1
2
3
spring:
datasource:
url: jdbc:mysql://localhost:3306/dbname?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&serverTimezone=UTC&useTimezone=true

方法二:配置 jackson

1
2
3
spring:
jackson:
time-zone: GMT+8 // 表示 jackson

还可以在时间对应的属性上添加注解:@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”, timezone = “GMT+8”)