設定系統時間為-東八區
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