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


轉載自: https://blog.csdn.net/liqinghuiyx/article/details/53333284

 

起因:在本地開發的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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM