相信技术的力量

服务端时区问题

插入数据库的时间,跟数据库有关

select now(); 查看mysql系统时间。和当前时间做对比
set global time_zone = '+8:00';设置时区更改为东八区

数据库正常,取出后存在时差

比如数据库是2019-05-05 17:28:45 取出来却是 Mon May 06 06:28:45 CST 2019,如果是数据库本身的CST时区问题,那么数据库显示应该是错误的,但是现在数据库正确,取出来的却错了,说明是程序本身的问题。

数据库连接依赖

     <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql.version}</version>
    </dependency>

5.x版本不需要设置时区,6.x之后就需要设置时区了,而目前项目中使用的是8.x,因此需要在数据库连接处指定时区,否则会存在时差。

解决方案:

在数据库连接时指定时区 &serverTimezone=Asia/Shanghai

url: jdbc:mysql://localhost:3306/test?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: root
password: root

搞定!

参考 https://blog.csdn.net/syr1136877833/article/details/85207715

取出数据库的展示时间

取出后的格式

2018-05-01T03:12:26.000+0000

springboot全局配置 , 指定时区为东八区+格式化时间

spring.jackson.time-zone=GMT+8
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss

⬆️