學海拾遺

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

          你的SimpleDateFormat起作用了嗎?

          Posted on 2008-04-29 20:52 tanzek 閱讀(7004) 評論(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);
          這樣就可以取到了。

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


          網站導航:
           
          主站蜘蛛池模板: 江陵县| 渭源县| 民勤县| 伊川县| 英山县| 尤溪县| 镇雄县| 龙山县| 萨嘎县| 博湖县| 曲松县| 泰顺县| 浦县| 中西区| 海晏县| 呼伦贝尔市| 健康| 阿拉善盟| 塔河县| 新疆| 阜新| 泊头市| 时尚| 渝北区| 南康市| 北辰区| 志丹县| 新建县| 聂拉木县| 寿光市| 崇州市| 车致| 宜阳县| 永平县| 定州市| 抚远县| 郴州市| 常德市| 色达县| 阜新| 汉沽区|