linux下如何解决jvm执行取得的时间和系统时间不一致的问题
在查看日志的发现,打印出来的日志时间与当前linux的时间不一致,用new Date()打印出来的时间了发现是EST时间,而Linux机器的时间是CST时间(中国标准时间),所以是JVM与linux的时间不一致导致的。
解决方法有三种:
在代码中增加时区
java执行时增加参数-Duser.timezone=GMT+8
调整系统的时区
- 修改/etc/sysconfig/clock文件
vim /etc/sysconfig/clock #编辑时间配置文件 ZONE="Asia/Shanghai" UTC=false #设置为false,硬件时钟不于utc时间一致 ARC=false
1
2
3
4- 设置etc/localhost
unlink /etc/localtime ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #linux的时区设置为上海时区
1
2- ntpdate cn.pool.ntp.org #对准时间
- /sbin/hwclock --systohc #设置硬件时间和系统时间一致并校准
- 设置完成后,重新启动java
提示
实际上我在linux上执行date命令的时候发现已经是东八区的时间了,此时其实只要执行第三种方法中的第二步即可,就是初始化/etc/localtime ,然后将东八区的绑定上。