通過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è)定文章。


但是有時(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ū)



2、通過設(shè)定SimpleDateFormat的構(gòu)造參數(shù)
??? 通過查閱API手冊,可知SimpleDateFormat還有一個(gè)構(gòu)造函數(shù):SimpleDateFormat(String?pattern, Locale?locale) ,因此我們就可通過設(shè)定Locale來取得特定時(shí)區(qū)的日期格式。


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