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()));如果上述代碼正常工作,它將顯示當(dāng)前的日期年月日時分秒格式。
但是有時候它并沒有如我們預(yù)期的那樣,而顯示的時間比當(dāng)前的時間少了八個小時,或是多了八個小時,而這一切就需要我們再關(guān)注另外一個問題,那就是時區(qū)(TimeZone)。
如果我們將時區(qū)進(jìn)行設(shè)置為“東八區(qū)”,那么就一切回復(fù)正常了。如下有兩種方式:
1、通過改變默認(rèn)的時區(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òu)造函數(shù):
SimpleDateFormat(String?pattern, Locale?locale) ,因此我們就可通過設(shè)定Locale來取得特定時區(qū)的日期格式。
SimpleDateFormat?sdf?=?new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss",?Locale.CHINA);
System.out.println(sdf.format(new Date());到這時候,關(guān)于時區(qū)的簡單設(shè)定就結(jié)束了,更多的參考請在網(wǎng)上搜索關(guān)于Java Locale的設(shè)定文章。