Linux java Tomcat 項目中 new Date 獲取時間 8小時 時差

起因:在本地開發的WEB項目部署到Linux 下後,存入數據庫的時間少了8個小時。


首先想到的肯定是時區問題

linux 下直接 執行 date 命令
Fri Nov 25 11:28:18 CST 2016

時間正常。然後簡單java類,打印new Date時間

public class TestDate {
    public static void main(String[] args) throws Exception {
        System.out.println(new Date());
    }
}
------運行結果
Fri Nov 25 11:29:31 CST 2016

確定linux,JDK 時間正常

但是Tomcat下 jsp打印時間,少了8個小時

<%@ include file="/WEB-INF/views/include/taglibs.jsp"%>
<%@ page language="java" pageEncoding="utf-8"%>
<jsp:useBean id="now" class="java.util.Date" />
${now}
Fri Nov 25 04:43:51 GMT 2016

明顯jsp中打印的時間時區爲GMT
CET,UTC,GMT,CST幾種常見時間概述與關係

已經過以上測試,可能是Tomcat問題,那麼修改tomcat 啓動參數
http://free.yes81.net/yes81/view-13576.html
按照以上方式修改後,tomcat內Date時間正常

過程中還發現一個問題我的系統中

/etc/sysconfig/clock 文件只有一行(文件說明

ZONE="Asia/Shanghai"

並沒有這兩行。

UTC=false
ARC=false

加上後,tomcat不修改時間也是正常。後經過搜索返現一篇博文
http://blog.tangjianwei.com/2009/06/04/the-problem-of-tomcat-timezone/
啓動提到:
tomcat讀取的可能是硬件時間(BIOS時間)

UTC=false
UTC – 指定BIOS中保存的時間是否是GMT/UTC時間,true表示BIOS裏面保存的時間是UTC時間,false表示BIOS裏面保存的時間是本地時間。

所以判斷 可能爲之前沒有設置 /etc/sysconfig/clock 中 UTC=false,倒置tomcat讀取時區出現問題倒置。

到此問題基本解決。不過對於時區其中的好多概念理解還不是很清楚,以後有時間整理一下。

其他相關博文
http://escode.blog.51cto.com/2025829/1147439

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章