學海拾遺

          生活、技術、思想無處不在學習
          posts - 52, comments - 23, trackbacks - 0, articles - 3
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          你的SimpleDateFormat起作用了嗎?

          Posted on 2008-04-29 20:52 tanzek 閱讀(7005) 評論(3)  編輯  收藏
          通過SimpleDateFormat格式化日期輸出是一種常見的用法,如下:
          SimpleDateFormat?sdf?=?new?SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
          System.out.println(sdf.format(
          new?Date()));
          如果上述代碼正常工作,它將顯示當前的日期年月日時分秒格式。

          但是有時候它并沒有如我們預期的那樣,而顯示的時間比當前的時間少了八個小時,或是多了八個小時,而這一切就需要我們再關注另外一個問題,那就是時區(TimeZone)。
          如果我們將時區進行設置為“東八區”,那么就一切回復正常了。如下有兩種方式:

          1、通過改變默認的時區
          TimeZone.setDefault(TimeZone.getTimeZone("GMT+8:00"));
          SimpleDateFormat?sdf?
          =?new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss");
          System.out.println(sdf.format(Calendar.getInstance()));

          2、通過設定SimpleDateFormat的構造參數
          ??? 通過查閱API手冊,可知SimpleDateFormat還有一個構造函數:SimpleDateFormat(String?pattern, Locale?locale) ,因此我們就可通過設定Locale來取得特定時區的日期格式。
          SimpleDateFormat?sdf?=?new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss",?Locale.CHINA);
          System.out.println(sdf.format(new Date());

          到這時候,關于時區的簡單設定就結束了,更多的參考請在網上搜索關于Java Locale的設定文章。

          評論

          # re: 你的SimpleDateFormat起作用了嗎?  回復  更多評論   

          2008-05-18 15:48 by [C.R.S.M]K01
          實踐證明:
          SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
          System.out.println(sdf.format(new Date());

          加上Locale.CHINA是不行的,建議摒棄。回復不能截圖等著我再寫篇也是關于這個問題的文章,其實這個問題也不是個小問題了。網上搜下就發現有人說這個問題可以導致數據庫查詢異常及BLOG不正常網上有朋友也遇到了。不過不是Java的。

          # re: 你的SimpleDateFormat起作用了嗎?  回復  更多評論   

          2008-12-29 17:27 by 有朝一日
          很好
          我也遇到此類的問題,看了上面的解決方案,我現在已經解決啦!

          # re: 你的SimpleDateFormat起作用了嗎?  回復  更多評論   

          2009-05-12 19:44 by shanxmxj
          SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
          Date date = new Date(System.currentTimeMillis());
          String nowTime = sdf.format(date);
          這樣就可以取到了。

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


          網站導航:
           
          主站蜘蛛池模板: 界首市| 巴南区| 万盛区| 汪清县| 郧西县| 德格县| 黄陵县| 株洲市| 永吉县| 洞口县| 黄山市| 祥云县| 成安县| 安远县| 无锡市| 沂南县| 布拖县| 平安县| 温泉县| 汽车| 大同县| 石屏县| 合阳县| 宕昌县| 荔浦县| 宜兴市| 塔城市| 偏关县| 息烽县| 阜阳市| 沙田区| 古蔺县| 塔河县| 吴旗县| 肥乡县| 三明市| 麻栗坡县| 乌兰浩特市| 江口县| 白朗县| 二连浩特市|