夏令时 DST (Daylight Saving Time) java中的夏令时【转】
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中的夏令时【转】的更多相关文章
- Java中的夏令时问题
因为在用C#做项目的时候被夏令时坑过一回,所以这次将在java中的时区转换信息做一下记录,很简单 SimpleDateFormat inputFormat = new SimpleDateFormat ...
- Java中夏令时带来的Date不一致问题 (转)
http://www.cnblogs.com/snake-hand/archive/2013/06/10/3131157.html 最近同事W发现使用Java Date创建日期,在不同的机器上执行,得 ...
- 夏令时(DST)测试
夏令时测试是比较小众的测试,主要针对在有夏令时的国家使用的软件,如果你接触到了这方面的测试,说明你在挣国外的钱:). 话不多说,先来介绍下什么是夏令时: 夏时制,夏时令(Daylight Sa ...
- DayLight Saving Light(HDU6010)
传送门:DayLight Saving Light 夏令时: 夏时令(Daylight Saving Time:DST),又称“日光节约时制”和“夏令时间”,是一种为节约能源而人为规定地方时间的制度, ...
- hdu 6010 Daylight Saving Time 泰勒公式
Daylight Saving Time Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- Java中的Calendar日历用法详解
第一部分 Calendar介绍 public abstract class Calendar implements Serializable, Cloneable, Comparable<Cal ...
- Daylight Saving Time
[Daylight Saving Time] 夏时制,又称日光节约时制.日光節約時間(英语:Daylight saving time)或夏令时间(英语:Summer time),是一种为节约能源而人为 ...
- java中的字符串相关知识整理
字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...
- Java中的字符串
Java语言中,把字符串作为对象来处理,类String就可以用来表示字符串(类名首字母都是大写的). 1.字符串常量 字符串常量是用双引号括住的一串字符. 例如:"Hello World&q ...
随机推荐
- HDU 5973 Game of Taking Stones 威佐夫博弈+大数
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5973 Game of Taking Stones Time Limit: 2000/1000 MS ...
- C#中相对路径转换为绝对路径的方法
第一种方法:使用System.Web类,System.Web.HttpContext.Current.Server.MapPath('相对路径');它还可以写成下面这种先声明空间,然后再使用函数的方式 ...
- hdu1520 树形dp
树形dp入门,在树上进行dp. 状态转移方程: dp[i][0] = max(dp[j][0], dp[j][1]);//i为j的上司 并且i不来 dp[i][1] = dp[j][0];//i来了 ...
- 【Gym 100015A】Another Rock-Paper-Scissors Problem
题 题意 Sonny出石头剪刀布的猜拳策略是 先出R,然后每连续两段都是打败前一段的出拳, 现在问你第n回合打败他要出什么. 分析 他的策略 R P S PSR SRP PSRSRPRPS SRPR ...
- 未完结第八节 JBPM流程节点
1.12个节点介绍 2.Node节点
- 【BZOJ-3172】单词 AC自动机
3172: [Tjoi2013]单词 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 2567 Solved: 1200[Submit][Status ...
- c++ 函数调用在进入下一个循环的时候会再次初始化参数,将函数体直接写进去就正常
#include"stdafx.h" #include"string" #include<iostream> #include<vector& ...
- MySQL------如何安装mysql-connector-java-5.1.38.zip
下载地址:http://dev.mysql.com/downloads/connector/j/ 安装mysql-connector-java-5.1.38.zip:1.解压文件->把里面的my ...
- CentOS 6.4 32位系统 LAMP(Apache+MySQL+PHP)安装步骤
先来解释一下,什么是 LAMP.正如标题所言,LAMP 实际上就是 Linux.Apache.MySQL.PHP 四个名称的缩写,当然最后一个 “P” 还有其他说法是 Perl 或者 Python.不 ...
- Linix常用命令
uname -a 查看内核版本 ls -al 显示所有文件的属性 pwd 显示当前路径 cd - 返回上一次目录 cd ~ ...