linux下如何解决jvm执行取得的时间和系统时间不一致的问题

在查看日志的发现,打印出来的日志时间与当前linux的时间不一致,用new Date()打印出来的时间了发现是EST时间,而Linux机器的时间是CST时间(中国标准时间),所以是JVM与linux的时间不一致导致的。

解决方法有三种:

  • 在代码中增加时区
  • java执行时增加参数-Duser.timezone=GMT+8
  • 调整系统的时区

    1. 修改/etc/sysconfig/clock文件
      vim /etc/sysconfig/clock   #编辑时间配置文件
      ZONE="Asia/Shanghai"
      UTC=false                   #设置为false,硬件时钟不于utc时间一致
      ARC=false    
      
    2. 设置etc/localhost
      unlink /etc/localtime 
      ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime  #linux的时区设置为上海时区
      
    3. ntpdate cn.pool.ntp.org #对准时间
    4. /sbin/hwclock –systohc #设置硬件时间和系统时间一致并校准
    5. 设置完成后,重新启动java

实际上我在linux上执行date命令的时候发现已经是东八区的时间了,此时其实只要执行第三种方法中的第二步即可,就是初始化/etc/localtime ,然后将东八区的绑定上。


   转载规则


《linux下如何解决jvm执行取得的时间和系统时间不一致的问题》 孤独如梦 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
spring boot配置druid数据库密码加密 spring boot配置druid数据库密码加密
前言本文主要介绍如何在spring boot中配置druid中数据库密码加密。 1. 引入druid的包 <dependency> <groupId>com.alibaba</groupId>
2019-06-06
下一篇 
jersey实现动态绑定 jersey实现动态绑定
业务场景对外提供接口服务时,需要基于token进行拦截。需要拦截指定的请求,根据token判断用户信息有效性。此文不提供token实现方法。 传统实现传统作法是直接使用一个拦截器,然后拦截所有的请求,通过配置白名单的方式,如果不是白名单的请
2019-06-06
  目录