夏令時 DST (Daylight Saving Time) java中的夏令時【轉】

來源:互聯網
上載者:User

標籤:

1916年,德國首先實行夏令時,英國因為怕德國會從中得到更大的效益,因此緊跟著也採取了夏令時

 

1986年至1991年,中華人民共和國在全國範圍實行了六年夏令時

 

サマータイム 夏時間(日本現在沒有實行夏令時,但是在美國駐軍的1948年?1951年使用了夏令時)

 

一下內容來源:http://blog.csdn.net/java2000_net/article/details/4362316

==========================================================================================

 

內容來自論壇的文章:http://topic.csdn.net/u/20090711/01/82c73f46-20ac-4a95-977d-f3f077ce822a.html

如下的java代碼

 

[java] view plaincopy 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:SS");  String sTime = "1991-04-07 00:00:00";  Date time = sdf.parse(sTime);  Calendar cd = Calendar.getInstance();  cd.setTime(time);  cd.add(Calendar.DATE, 7);  time = cd.getTime();  System.out.println(sdf.format(time));  

  

在運行後,沒有得到預期的

1991-04-14 00:00:00

而是

1991-04-14 01:00:00

憑空多出來了1小時

 

根據火龍果的研究成果,這個是夏令時哦,使用 Calendar.DST_OFFSET 可以獲得位移量。

夏令時是通過 TimeZone 的子類 sun.util.calendar.ZoneInfo 實現的。 

ZoneInfo 中的資料存放於 %JRE_HOME%/lib/zi 目錄中。 (注意,是在jre的目錄下)

我們機器一般採用的時區名稱為 Asia/Shanghai,相對應的時區資訊檔位於: 

%JRE_HOME%/lib/zi/Asia/Shanghai 中,這是一個二進位檔案。 

通過 sun.util.calendar.ZoneInfoFile 的解析,可以獲得需要採用夏令時的時間為: 

 

  1940-06-03 01:00:00 ~ 1940-09-30 23:00:00
  1941-03-16 01:00:00 ~ 1941-09-30 23:00:00
  1986-05-04 01:00:00 ~ 1986-09-13 23:00:00
  1987-04-12 01:00:00 ~ 1987-09-12 23:00:00
  1988-04-10 01:00:00 ~ 1988-09-10 23:00:00
  1989-04-16 01:00:00 ~ 1989-09-16 23:00:00
  1990-04-15 01:00:00 ~ 1990-09-15 23:00:00
  1991-04-14 01:00:00 ~ 1991-09-14 23:00:00

 

前段表示那一天開始的時間,也就是說那一天的 0 點在該時區中是不存在。 

後段表示那一天結束的時間,這個時間計算很複雜: 

如果目前時間為:1986-09-13 23:00:00,增加 1 小時後為 1986-09-14 00:00:00 
如果目前時間為:1986-09-13 22:00:00,增加 2 小時後為 1986-09-13 23:00:00,因為 1986-09-13 23:00:00 是夏令時結束時間,時鐘需要回撥。

由於每個時區的夏令時都不一樣,程式設計語言中的夏令時演算法非常複雜。 

============================================================================================

 

擴充 : GMT

 

格林威治標準時間GMT

 轉:http://blog.csdn.net/sxzlc/article/details/7281603

夏令時 DST (Daylight Saving Time) java中的夏令時【轉】

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.