學(xué)海拾遺

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

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

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

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

          到這時(shí)候,關(guān)于時(shí)區(qū)的簡單設(shè)定就結(jié)束了,更多的參考請?jiān)诰W(wǎng)上搜索關(guān)于Java Locale的設(shè)定文章。

          評論

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

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

          加上Locale.CHINA是不行的,建議摒棄。回復(fù)不能截圖等著我再寫篇也是關(guān)于這個(gè)問題的文章,其實(shí)這個(gè)問題也不是個(gè)小問題了。網(wǎng)上搜下就發(fā)現(xiàn)有人說這個(gè)問題可以導(dǎo)致數(shù)據(jù)庫查詢異常及BLOG不正常網(wǎng)上有朋友也遇到了。不過不是Java的。

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

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

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

          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ā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 东兴市| 米林县| 大埔区| 庆阳市| 亳州市| 北碚区| 安义县| 鄂州市| 九江市| 健康| 鱼台县| 宁城县| 临漳县| 轮台县| 鹿邑县| 清河县| 开平市| 宁城县| 米易县| 阳泉市| 兴宁市| 温泉县| 长汀县| 灵川县| 榆林市| 大港区| 德昌县| 平凉市| 栾城县| 长治县| 长治市| 任丘市| 霸州市| 馆陶县| 肃北| 镇远县| 巴东县| 焦作市| 菏泽市| 榆社县| 镇康县|