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代码

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中的夏令时【转】的更多相关文章

  1. Java中的夏令时问题

    因为在用C#做项目的时候被夏令时坑过一回,所以这次将在java中的时区转换信息做一下记录,很简单 SimpleDateFormat inputFormat = new SimpleDateFormat ...

  2. Java中夏令时带来的Date不一致问题 (转)

    http://www.cnblogs.com/snake-hand/archive/2013/06/10/3131157.html 最近同事W发现使用Java Date创建日期,在不同的机器上执行,得 ...

  3. 夏令时(DST)测试

    夏令时测试是比较小众的测试,主要针对在有夏令时的国家使用的软件,如果你接触到了这方面的测试,说明你在挣国外的钱:).   话不多说,先来介绍下什么是夏令时:   夏时制,夏时令(Daylight Sa ...

  4. DayLight Saving Light(HDU6010)

    传送门:DayLight Saving Light 夏令时: 夏时令(Daylight Saving Time:DST),又称“日光节约时制”和“夏令时间”,是一种为节约能源而人为规定地方时间的制度, ...

  5. hdu 6010 Daylight Saving Time 泰勒公式

    Daylight Saving Time Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  6. Java中的Calendar日历用法详解

    第一部分 Calendar介绍 public abstract class Calendar implements Serializable, Cloneable, Comparable<Cal ...

  7. Daylight Saving Time

    [Daylight Saving Time] 夏时制,又称日光节约时制.日光節約時間(英语:Daylight saving time)或夏令时间(英语:Summer time),是一种为节约能源而人为 ...

  8. java中的字符串相关知识整理

    字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...

  9. Java中的字符串

    Java语言中,把字符串作为对象来处理,类String就可以用来表示字符串(类名首字母都是大写的). 1.字符串常量 字符串常量是用双引号括住的一串字符. 例如:"Hello World&q ...

随机推荐

  1. WPF小知识,MessageBox的多种用法

    我们在程序中经常会用到MessageBox. 现将其常见用法总结如下: 1.MessageBox.Show("Hello~~~~"); 最简单的,只显示提示信息. 2.Messag ...

  2. hdu5536 字典树xor

    一想到xor还要求最大类似的题,字典树效率高. 此代码c++ TLE. #include<stdio.h> #include<string.h> ; struct node { ...

  3. hdu1358 KMP

    求循环节. #include<stdio.h> #include<string.h> #define maxn 1000010 int next[maxn]; char s[m ...

  4. 【HDU 5438】Ponds

    题意 不断删去度数为1的点,最后求有奇数个点的联通块的权值之和. 分析 存边的时候,要头尾都存这个边.用dfs或者队列删点,再用并查集或者dfs确定联通块,然后统计联通块的点数,最后累加. 我自己写的 ...

  5. JAVA中的数组是对象吗?

    public class Main{ public static void main(String[] args) { int a[]={1,9}; //Object obj=new int[10]; ...

  6. 排序算法(一)(时间复杂度均为O(n*n))

    对于一个int数组,请编写一个选择排序算法,对数组元素排序. 给定一个int数组A及数组的大小n,请返回排序后的数组. 测试样例: [1,2,3,5,2,3],6 [1,2,2,3,3,5] 冒泡排序 ...

  7. #error和#line实例

    1.#include <stdio.h>#define CONST_NAME1 "CONST_NAME1"#define CONST_NAME2 "CONST ...

  8. php网站验证码的生成

    <?php header("Content-type:text/html;charset=utf-8"); header("Content-type:image/p ...

  9. NYOJ 77 开灯问题

    #include <stdio.h> #include <string.h> #define maxn 1050 int a[maxn]; int main(void) { i ...

  10. c# 解析JSON的几种办法(转载)

    对比 .NET下几种常见的解析JSON方法 主要类 命名空间 限制 内建LINQ支持 DataContractJsonSerializer System.Runtime.Serialization.J ...