缘起
为了方便做项目的时候发布测试,故而在一台win10上面搭建了wsl环境,然后部署了jdk和tomcat8。项目是springboot + gradle(本来是maven项目,想尝一下gradle的味道,就换了),执行gradle命令后,通过ssh连接服务器,一键打包发布。一切仿佛那么美好,直到…
有一天突然发现时间见了鬼,数据库中的时间比实际时间早了八个小时!
-
开始怀疑是同事的服务发送的时间格式不对,或者传错了,查看日志后发现并不是。
-
怀疑数据库连接的时区设置错误,网上搜索后,确认不是连接时区问题,serverTimezone=GMT%2B8是正确的。
-
怀疑mysql的时区设置有问题,用语句获取后(详细语句百度获取),确认没问题。
-
怀疑Linux时区有问题,执行date语句,发现也没问题 。
-
打印日志后发现,new Date()生成的对象时间是错误的,于是怀疑到jvm的头上。jvm是先从/etc/localtime中获取时间,如果没有获取到,再从/etc/sysconfig/clock中获取,那么改这两个地方就行了:
-
软连接上海时区给localtime: ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
-
添加/etc/sysconfig/clock文件:
-
ZONE="Asia/Shanghai" UTC=false ARC=false
-
-
重启tomcat即可!
-
问题:
wsl重启之后,时区问题又会出现,暂时未解决,先用着吧,只是测试机而已。