问题:数据库时间与系统时间相差8小时+前端时间与数据库时间相差8小时

数据库时间字段

create_time datetime 创建时间
问题
前端发现创建时间与当前系统时间相差8小时,查看数据库时间也是与当前系统相差8小时
解决步骤:
1.数据库时间问题,与时区有关

参考博文:
https://www.jb51.net/article/176404.htm

​https://blog.csdn.net/iris_xuting/article/details/84886483

方式一:改变Java连接数据库的url

修改url连接,添加时区:

&serverTimezone=Asia/Shanghai

结果:mysql数据库时间与系统时间一致了。但是前端显示时间还是相差8小时。继续解决。

方式二:修改mysql数据库时区

1).查看当前数据库的时区:

show global variables like'%time_zone%';

+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone |        |
| time_zone        | SYSTEM |# 数据库使用时区跟system一致,即当前系统时区,是耶路撒冷(+2:00),等同于set time_zone='+2:00'了。

2).解决方案:

方式一:设置服务器的时区都为北京时间,即修改数据库服务器的time_zone为“+8:00”解决。

这个参数,可以在通过mysqld命令启动数据库的时候加上参数 –default-time-zone=timezone来设置时区,

也可以通过my.cnf配置文件的[mysqld]标签里增加 default-time-zone='timezone’这一行来设置。

方式二:通过命令修改全局或者会话级别的time_zone,可以即时生效。

修改全局time_zone的值
set global time_zone='+8:00';
或
修改当前会话的time_zone
set time_zone='+8:00';
2.Java时间问题,返回时间json格式不对

参考博文:https://www.cnblogs.com/jiefu/p/12491812.html

方法:使用注解 @JsonFormat 格式化返回时间,并设置时区

@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="Asia/Shanghai")

结果:前端时间与数据库时间一致,即前段时间、数据库时间都与系统时间一致,问题解决。


冷知识-多个时区概念的理解

DST

Daylight Saving Time,“夏令时”,一般在天亮早的夏季人为将时间调快一小时,可以使人早起早睡,减少照明量,以充分利用光照资源,从而节约照明用电。中国1986-1991年实行夏令时,1992年废除。

CST

China Standard Time(老外认为有其他含义,中国就这个缩写),中国标准时。

GMT

Greenwich Mean Time,格林威治标准时,地球每15°经度 被分为一个时区,共分为24个时区,相邻时区相差一小时;例: 中国北京位于东八区。
Asia/Shanghai与GMT+8的区别

​ 1992年以后,在中国,GMT+8和Asia/Shanghai是一样的时间。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值