java&postgresql時區總結

來源:互聯網
上載者:User

標籤:

1、首先什麼是時區?

時區(Time Zone)是地球上的地區使用同一個時間定義。1884年在華盛頓召開國際經度會議時,為了克服時間上的混亂,規定將全球劃分為24個時區。

2、Date

TimeZone對象給我們的是原始的位移量,也就是與GMT相差的微秒數,Java的Date對象裡面儲存著當前時刻到1970年1月1日0:00所經過的毫秒數,它與時區和地區沒有關係(其實可以認為是GMT時間)

電腦內部記錄的時間(Date date = new Date()), 為格林威治標準時(GMT). 即java.util.Date代表一個時間點,其值為距公元1970年1月1日 00:00:00的毫秒數,所以它可以認為是沒有時區和Locale概念的。

3、DateFormat

日期格式化類DateFormat, 對於不同地區的配置一般有兩個點, 一個是Locale , 一個是TimeZone

前者(Locale)使DateFormat按所配置的地區特性來輸出文字(例如中國,美國,法國不同地區對日期的表示格式不一樣,中國可能是2001年10月5日)

後者(TimeZone)讓DateFormat知道怎麼去轉換,去調整時間位移度,從而得到符合配置的時區的時間.

假設當前時區為GMT+0,取得目前時間為2:00, 那麼如果你配置DateFormat.setTimeZome("GMT+8"), 即北京時間的時區, 那麼這時候格式化輸出的就是10:00了, 因為系統對原始毫秒數進行了時間位移調整(調到你設定的時區),即加多8小時,之後再格式化輸出日期的字串形式

4、代碼案例
import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.TimeZone;import java.util.Date;public class Test {    public static void main(String[] args) {        //TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));        //TimeZone.setDefault(TimeZone.getTimeZone("Europe/Paris")); //注意這行下面的代碼要取消注釋        TimeZone time = TimeZone.getDefault();// 這個是國際化所用的        System.out.println(time);        Calendar calendar = Calendar.getInstance();// 擷取執行個體        DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 構造格式化模板        Date date = calendar.getTime(); // 擷取Date對象        String str = new String();        str = format1.format(date);// 對象進行格式化,擷取字串格式的輸出        System.out.println(str);    }}

輸出的結果是:

sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null]2015-07-03 22:27:14

如果將注釋Europe/Paris這行開啟,那麼啟動並執行結果是:

sun.util.calendar.ZoneInfo[id="Europe/Paris",offset=3600000,dstSavings=3600000,useDaylight=true,transitions=184,lastRule=java.util.SimpleTimeZone[id=Europe/Paris,offset=3600000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2]]2015-07-03 16:30:49

說明使用TimeZone.setDefault方法可以調整顯示的時區

 

java&postgresql時區總結

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.