场景:代码运行在Linux-A上,new Date() 生成的时间比当前时间早13个小时,导致存入数据库内的时间也早13个小时,但前台读取展示出来的时间又是正常的。在数据库直接select now()测试出来的时间也是比当前时间早13个小时。
分析:
问题一:Linux-B上的MySQL数据库内的时间设置有问题
问题二:Linux-A上代码new Date()出来的时间有问题
解决:
问题一:找DBA修改了数据库内的时间设置,修改完成后数据库select now()出来的时间正常,但是存入时间和取出时间还是不一致。
问题二:设置Linux-B上的时区,通过命令“ tzselect ”,选择5-Asia、9-china、1-Beijing,设置完成后还是不行。再到 /etc 目录下创建文件 timezone,内容为 Asia/Shanghai。设置完成后重新在Linux-A上部署项目,问题解决,读写时间一致。
PS:timezone文件的指令可以用 echo 'Asia/Shanghai' >/etc/timezone
处理完了写出来,防止自己忘记,也供大家参考
备注:上面的方法其实也是看了许多大牛的博客自己去试出来然后总结的。
======================================================
后面又遇到一个,某张表在数据库储存的时间与实际时间差了12个小时,其他都正常,就这张表时间不对。后续在实体类上加注解 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 搞定。