Posted on 2008-04-29 20:52
tanzek 閱讀(6994)
評論(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的構造參數
??? 通過查閱API手冊,可知SimpleDateFormat還有一個構造函數:
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的設定文章。