學海拾遺

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

          你的SimpleDateFormat起作用了嗎?

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

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


          網站導航:
           
          主站蜘蛛池模板: 邳州市| 张北县| 益阳市| 高青县| 廊坊市| 民县| 宜宾市| 鄯善县| 拉萨市| 股票| 买车| 广水市| 繁昌县| 芜湖县| 吴忠市| 鹿邑县| 台北市| 武汉市| 遵化市| 昌吉市| 通州市| 云阳县| 山西省| 金堂县| 湘西| 鸡东县| 井研县| 兴海县| 绥中县| 常熟市| 卫辉市| 益阳市| 吉首市| 宜昌市| 凌云县| 莲花县| 广德县| 芜湖县| 隆林| 西林县| 合肥市|