1. 程式人生 > >設定系統時間為-東八區

設定系統時間為-東八區

1.檢視系統伺服器時區:

    a.  date -R

    b. cat /etc/sysconfig/clock   //下面針對東八區設定

[[email protected] ~]# 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