1. 程式人生 > >java 獲取時間與系統時間不一致問題

java 獲取時間與系統時間不一致問題

最近專案部署到伺服器上,發現時間不對,與當前時間相差12個小時,第一反應是 系統時間是不是不對。通過date 命令檢視,

發現系統用的是est 時區 (EST eastern standard time (美國)東部標準時間  慢北京時間 13個小時。)

那就是簡單了 ,修改下時區就好了。於是按照晚上的命令將系統時區修改了下。時間正常了,重新執行程式,問題仍能存在,還是相差13個小時。以為是有快取什麼的,能後就重啟系統試試,重啟後再次執行程式,還是相差13個小時 ,被這個快搞得精疲力盡了 發火發火發火 

能後寫了個測試介面放到伺服器上。通過呼叫發現。返回的時間還是忙13個小時。剛剛好,不多一份也不少一秒,所以猜測還是時區的問題。所以順便也列印了下時區。發現時區還是EST 時區沒有變過來。 再見

能後上午搜尋了下,發現也有網友遇到過相似的問題,他給出的解決方案是

當然我會給出解決方案:

方法一:JVM執行時增加引數,指定時區 -D user.timezone=GMT+08

方法二:直接在程式中設定時區。System.setProperty(“user.timezone”,”GMT +08″);

方法三:直接加上28800就好了(8hours*60min*60sec=28800)


照著這位網友的思路。和搜尋相關操作步驟,在tomcat 啟動的時候,設定個預設時區方法是在 catalina.sh 檔案中新增如下這行程式碼

JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF8  -Duser.timezone=GMT+08"


重新啟動tomcat  正常了。

不過不知道為什麼,系統的時區已經修改了,但是程式獲取到的時區還是沒有修改過來,不知道這個是不是和伺服器有關因為伺服器用的是虛機,都是在一臺伺服器上虛擬出來的。程式獲取的不是虛機的時間,而且主機的時間。 以上只是猜測,還待驗證