开发过程中大家都知道凡是与时间有关的,都离不开时区。程序中影响时区的东西太多了,简单说下我这次遇到的问题。
代码如下:
![00e2ed72e81751397332a29df348cde9.png](https://img-blog.csdnimg.cn/img_convert/00e2ed72e81751397332a29df348cde9.png)
按说这个时间是没有问题的吧,但是存入数据库后时间显示的与当前时间不对。如下:
![00fd746af13a84b5a1437cbe01103212.png](https://img-blog.csdnimg.cn/img_convert/00fd746af13a84b5a1437cbe01103212.png)
比实际时间晚了十几个小时。我查了linux系统的时间好像是没有问题的:
![c2062981c1a0221a397f03739e8c3b65.png](https://img-blog.csdnimg.cn/img_convert/c2062981c1a0221a397f03739e8c3b65.png)
我又排查了mysql时区,执行下面命令:
show variables like '%time_zone%';
结果如下:
![61dc4d88ca41704d32600c1847cdde69.png](https://img-blog.csdnimg.cn/img_convert/61dc4d88ca41704d32600c1847cdde69.png)
time_zone:说明mysql使用system的时区
system_time_zone:说明system使用CST时区
time_zone是系统时区显示的SYSTEM,把时区改成+8使用下面的命令:
方法1:
set time_zone='+8:00';flush privileges;
方法2:
找到my.ini, 在mysqld 下增加 default-time-zone = '+8:00'
必须放到mysqld 下,放入其它位置无效
![40f0bc65c90314c6471759f6df7aba9e.png](https://img-blog.csdnimg.cn/img_convert/40f0bc65c90314c6471759f6df7aba9e.png)
改好以后发现数据库时间与当前时间对了。