學海拾遺

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

          你的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()));
          如果上述代碼正常工作,它將顯示當前的日期年月日時分秒格式。

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

          1、通過改變默認的時區(qū)
          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的構造參數(shù)
          ??? 通過查閱API手冊,可知SimpleDateFormat還有一個構造函數(shù):SimpleDateFormat(String?pattern, Locale?locale) ,因此我們就可通過設定Locale來取得特定時區(qū)的日期格式。
          SimpleDateFormat?sdf?=?new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss",?Locale.CHINA);
          System.out.println(sdf.format(new Date());

          到這時候,關于時區(qū)的簡單設定就結束了,更多的參考請在網上搜索關于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是不行的,建議摒棄。回復不能截圖等著我再寫篇也是關于這個問題的文章,其實這個問題也不是個小問題了。網上搜下就發(fā)現(xiàn)有人說這個問題可以導致數(shù)據(jù)庫查詢異常及BLOG不正常網上有朋友也遇到了。不過不是Java的。

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

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

          # 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);
          這樣就可以取到了。

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


          網站導航:
           
          主站蜘蛛池模板: 桂平市| 额济纳旗| 安化县| 东山县| 丁青县| 三门县| 德惠市| 南丰县| 武鸣县| 增城市| 遂溪县| 新建县| 怀安县| 牙克石市| 肃宁县| 同仁县| 翁源县| 新野县| 蒲江县| 九台市| 隆德县| 丘北县| 华安县| 吉木萨尔县| 谢通门县| 河源市| 类乌齐县| 北票市| 徐闻县| 天峨县| 基隆市| 枣强县| 台湾省| 明星| 辽阳市| 永嘉县| 嘉禾县| 内乡县| 连州市| 大余县| 淳化县|