轉載自: 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
已經過以上測試,可能是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