qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          java 獲得的系統時間與操作系統的時間不一致

          問題:
            1.new Date() 得到的時間?和系統相差 相差8個小時
            2.eclipse控制臺打印的時間與系統相差 相差8個小時
            3.log4j日志的時間與與系統相差 相差8個小時
            上述問題其實是同一個問題。
            原因:java獲得的時區跟系統的時區不一樣
            解決方法如下:
            1.在代碼前加上下面這句話就行了:TimeZone tz =TimeZone.getTimeZone("Asia/Shanghai");TimeZone.setDefault(tz)
            2.在tomcat中修改catalina.bat文件的 set JAVA_OPTS在后面加上-Duser.timezone=GMT+08
            3.修改注冊表中的默認時區改成(GMT+08:00) 北京,重慶,香港特別行政區,烏魯木齊
            如果還不行看下:從正常的并且是相同系統的機器中導出HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Time Zones 項,然后導入到自己機器中 。
            以上三種方法都是解決方法。
            在修改時區的時候最好用代碼看下JAVA獲得的時區是什么時區,代碼如下:
          Properties props=System.getProperties();
          Iteratoriter=props.keySet().iterator();
          while(iter.hasNext())??Stringkey=(String)iter.next();
          System.out.println(key+" = "+props.get(key));
          }
            user.timezone=??就是JAVA獲得的時區,然后再看操作系統的時區。去改注冊表吧。
            weblogic :
            有一個頁面需要保存日期,在前臺JS中DEBUG的時候都是正確的,可是存到數據庫中,就發現日期少一天,準確的說是比選擇的日期早了8個小時,基本就可以確定是時區的錯誤,
            開始查找,數據庫時區,沒問題,服務器系統時區,沒問題,
            最終問題居然出在weblogic的時區上面...
            weblogic是使用自帶的jre,而自帶的jre中默認的時區就是GMT,而中國標準時間大家都知道是GMT+8,網上有說去改weblogic自帶jre中的GMT文件,把GMT8改成GMT,但總覺得這樣不是很好,如果有需要使用GMT標準時間的時候會有出問題的風險
            于是從weblogic的啟動腳本上下手
            修改 domians/project/bin/startWebLogic.cmd
            找到類似
            Xml代碼
            set JAVA_OPTIONS=%JAVA_OPTIONS%
            [xml] view plaincopy
            set JAVA_OPTIONS=%JAVA_OPTIONS%
            在最后面加上 -Duser.timezone=GMT+8 即設置時區為GMT+8 也可寫為 Asia/shanghai
            修改之后為
            Xml代碼
            set JAVA_OPTIONS=%JAVA_OPTIONS% -Duser.timezone=GMT+8
            [xml] view plaincopy
            set JAVA_OPTIONS=%JAVA_OPTIONS% -Duser.timezone=GMT+8
            保存,重新啟動weblogic,問題解決
            文件查找:startWebLogic.cmd
            unix搜索命令:
            find / -name mk/表示查找目錄,也可以具體到某個目錄以提高效率-name表示以文件名查找
            設置默認時區:
            TimeZone tz =TimeZone.getTimeZone("Asia/Shanghai");
            TimeZone.setDefault(tz);
            Date date=new Date();
            String str=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
            System.out.println(str);

           設置時間格式的時區:
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd kk:mm:ss ");
            sdf.setTimeZone(TimeZone.getTimeZone("GMT+8"));
            Date d = new Date();
            System.out.println(sdf.format(d));
            設置日歷的時區:
          Calendar now = Calendar.getInstance();
          now.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));//important
          System.out.println(now.get(Calendar.YEAR));
          System.out.println(now.get(Calendar.MONTH));
          System.out.println(now.get(Calendar.DAY_OF_MONTH));
          System.out.println(now.get(Calendar.HOUR_OF_DAY));
            設置時間格式的時區:
          SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
          formatter.setTimeZone(TimeZone.getTimeZone("GMT+8"));
          Date currTime = new Date();
          String thisTime = new String(formatter.format(currTime));
          System.out.println("GMT+8:"+thisTime);
            系統時區:
            String tzId = TimeZone.getDefault().getID();
            System.out.println("TimeZone.getDefault().getID():"+tzId);
            系統時區:
            String zone = System.getProperty("user.timezone");
            System.out.println("user.timezone:"+zone);

          posted on 2013-10-09 10:43 順其自然EVO 閱讀(1129) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2013年10月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 郯城县| 台安县| 喀什市| 靖宇县| 浮梁县| 达日县| 舒兰市| 瓮安县| 灵武市| 清水河县| 广饶县| 内丘县| 栖霞市| 池州市| 安阳市| 金门县| 东港市| 高雄县| 新晃| 大邑县| 巢湖市| 台湾省| 鱼台县| 龙岩市| 石河子市| 安龙县| 太保市| 龙口市| 镇康县| 公主岭市| 涞水县| 肥西县| 蕉岭县| 民丰县| 大余县| 永泰县| 祁门县| 青阳县| 勃利县| 奉贤区| 平泉县|