设置系统时间为-东八区

1.查看系统服务器时区:

    a.  date -R

    b. cat /etc/sysconfig/clock   //下面针对东八区设置

[root@localhost ~]# cat /etc/sysconfig/clock
#ZONE="America/New_York"
ZONE="Asia/Shanghai"
UTC=false
ARC=false

    c. cat /etc/localtime    

        //参考: https://blog.csdn.net/sukhoi27smk/article/details/50241869

  设置系统时间

     ntpdate -u 127.*.*.* (需要匹配的时间的机器,在需要同步的服务器上执行(需要自己设置过才能执行))

2.设置时区

   a. 通过命令: tzselect

   参考: http://codingstandards.iteye.com/blog/834280

   b. JAVA 代码设置时区:

   参考: https://blog.csdn.net/ghostgarlic/article/details/1665322

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

今天在和对端系统调试接口的时候发现一个怪问题。用本地环境调试调用接口没有问题,发到服务器上问题就来了参数解析不了。确认了版本没有问题以后,一步步分析。这接口对端要求我们参数通过AES加密传过去,秘钥是一串字符加年月日的时间戳。怀疑是服务器时间不对引起的,但是通过date命令查看发现服务器的时间是正常的。通过打日志才发现通过Java程序代码new Date()取得的时间比服务器的时间少了近8个小时,所以加密后对端解密解密不了。

现在就要办法解决jvm执行取得的时间和系统时间不一致的问题。通过在网上查阅资料,应该是jvm运行的时区设置问题。

解决的办法有几种:

1、在程序中使用java的函数设定时区。
2、在启动java程序时加参数-Duser.timezone=GMT+8

3、调整系统的时区设置 (如下:)

 

 1).vi /etc/sysconfig/clock   #编辑时间配置文件
    ZONE="Asia/Shanghai"
    UTC=false                   #设置为false,硬件时钟不于utc时间一致
    ARC=false
2).ln -sf /usr/share/zoneinfo/Asia/Shanghai    /etc/localtime    #linux的时区设置为上海时区
3).ntpdate cn.pool.ntp.org    #对准时间
4)./sbin/hwclock --systohc   #设置硬件时间和系统时间一致并校准 

问题error:发现/etc/sysconfig/clock 配置文件的时区还是纽约时间,难怪会差近8个小时咯。可能是装系统的时候没有没有选择时区默认的纽约时间。

通过第三种方法调整好系统的时区设置,果然执行后一切正常。

***********最有效的发现!按下面操作。********

针对中国时区,修改操作如下

1.   

  修改文件 /etc/sysconfig/clock内容:

  ZONE=Asia/Shanghai 

  UTC=false 

  ARC=false

2.    (针对同步时区不成功,执行下面步骤就行!!!)

  rm -rf /etc/localtime

  ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

    

猜你喜欢

转载自blog.csdn.net/weixin_37618127/article/details/80654377