`
marlboro027
  • 浏览: 54223 次
  • 性别: Icon_minigender_1
  • 来自: 陕西
社区版块
存档分类
最新评论

Java里面的夏令时(转载自http://hi.baidu.com/jiyangguang666/blog/item/c9ada1cfb124f034f9dc)

阅读更多
如下的java代码

1. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:SS");
2. String sTime = "1991-04-07 00:00:00";
3. Date time = sdf.parse(sTime);
4. Calendar cd = Calendar.getInstance();
5. cd.setTime(time);
6. cd.add(Calendar.DATE, 7);
7. time = cd.getTime();
8. 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 目录中。

我们机器一般采用的时区名称为 Asia/Shanghai,相对应的时区信息文件位于:

%JRE_HOME%/lib/zi/Asia/Shanghai 中,这是一个二进制文件。

通过 sun.util.calendar.ZoneInfoFile 的解析,可以获得需要采用夏令时的时间为:

Java code

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 是夏令时结束时间,时钟需要回拨。

由于每个时区的夏令时都不一样,编程语言中的夏令时算法非常复杂。

幸好中国从 1992 年开始停止使用夏令时。

这里是夏令时时区数据页面:http://www.twinsun.com/tz/tz-link.htm
这里可以找到各时区最新的夏令时数据:ftp://elsie.nci.nih.gov/pub/
分享到:
评论

相关推荐

    travel_sql.sql

    此sql为travel项目的sql,可将其中sql语句全部复制进行执行,即可创建出项目的测试sql。 此sql为travel项目的sql,可将其中sql语句全部复制进行执行,即可创建出项目的测试sql。 此sql为travel项目的sql,可将其中...

    Java 实现AES之CBC/CFB模式的加密解密源码

    完整能运行的java AES源代码,需要官网手工下载local_policy.jar 和 US_export_policy.jar文件覆盖java安装目录的文件,才能使用CFB模式。... //java -jar testAES.jar --decrypt ./OUT.txt ./OUTDEC.txt ./key.txt CFB

    maoyan-master.zip小程序例子源码打包下载适合研究学习技术

    maoyan-master.zip小程序例子源码打包下载适合研究学习技术maoyan-master.zip小程序例子源码打包下载适合研究...1.适合学习做毕业设计参考模板。 2.适合程序员学习开发小程序研究用 3.适合小公司换皮做新项目参考使用用

    mimikatz,ms14068

    kerberos::golden /admin:administrateur /domain:chocolate.local /sid:S-1-5-21-130452501-2365100805-3685010670 /krbtgt:310b643c5316c8c3c70a10cfb17e2e31 /ticket:chocolate.kirbi crypto crypto::capi ...

    文档工具-文档内容检索

    工具设计初衷为文件管理目录麻烦,文件多,不方便检索,内容搜索不到等问题。...最新版本发布地址请进入: http://hi.baidu.com/lmdpstgrowbqtxq/item/afc24ee4a117f5285b7cfb70?qq-pf-to=pcqq.discussion

    WIN7冰点.rar

    曾经网吧风靡很久的超好用还原软件,安装完全 选择要保护的盘,每次重启就会还原,再也不怕中病毒和垃圾文件了

    [ios]视频音频缓冲进度

    对自定义视频、音频播放器添加缓冲进度条,

    jave-1.0.2.zip

    音乐格式转换

    fabrebatalla18.github.io:PS4-Exploit-Host-1.01-5.50

    ://fabrebatalla18.github.io 4.05: APPtoUSB v17: : DB-SG备份: : Dumper-XVortex v1.6: : FTP-XVortex v1.1: : HEN-XVortex v1.3: : HEN-VR: : 启用浏览器: : PKG2USB v1: : //github....

    LPC111x_LPC11Cxx_串口波特率配置工具

    该软件用于NXP LPC111x LPC11Cxx ...http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=9cfb2d51-5ff4-4491-b0e5-b386f32c0992 因时间等原因,未集成.net,若1.0版本用户较多,我会更新,并集成.net

    ZendStudio 10.5.0 X86 win32位安装破解汉化包 百度云下载包

    ZendStudio 10.5.0 安装破解汉化包 百度云下载包 链接:https://pan.baidu.com/s/1e5XpogDL14X5XzsY1TA6Cw 密码:0i9k 说明: ZendStudio-10-setup 10.5.0安装.zip ZendStudio-10.5.0--SN破解工具.rar 关于破解 ...

    dotnetfx_cleanup_tool

    原因是由于你的计算机环境里面存在着4.0版本,dotnetfx_cleanup_tool工具只支持1.0-3.5版本,所以没有卸载掉。 办法就是在官网重新下载安装Microsoft .NET Framework 4,安装成功以后,直接安装Microsoft .NET ...

    C:\Users\Administrator\.gradle\caches\jars-1\cache.properties (系统找不到指定文件)解决办法

    C:\Users\Administrator\.gradle\caches\jars-1\cache.properties (系统找不到指定文件)解决办法

    Eclipse自动部署JSP项目到Tomcat

    该文件是解决Eclipse中自动部署项目到Tomcat的webapps目录的问题, 本文是对百度空间 IT_狂人 的作品进行的改进, http://hi.baidu.com/it_crazyer/item/8c4e22a8e6bbf51da9cfb773

    淘金币全额兑换监控网匠版

    此软件的打包程序为破解软件,可能会被360提示有风险或木马,请放心使用,关于软件安全问题请看通过virscan.org网站37家主流安全软件的扫描结果http://r.virscan.org/report/b61a34cda1cfb7425fba75a86e19a94a.html ...

    雷电系列修改器 v6.00

    雷电4.04版修改器 v6.00更新内容: 1、增加第4个超级武器,自动跟踪弹。 2、雷电v4.04版天空...http://down.qiannao.com/space/file/uu1001/share/2010/3/22/-96f7-7535-7cfb-5217-4fee-6539-5668_v6.00.rar/.page

    uniapp 官方模板自己改小了一下,支持web网页和app。

    uniapp 官方模板自己改小了一下,支持web网页和app。uniapp 官方模板自己改小了一下,支持web网页和app。uniapp 官方模板自己改小了一下,支持web网页和app。uniapp 官方模板自己改小了一下,支持web网页和app。...

    Zend Studio 10.6.1 亲测破解文件

    1. 到官方网站下载安装完后, 确保先不要启动程序 http://www.zend.com/en/products/studio/downloads 2. 拷贝破解文件夹Cracked plugins jar下的这个文件覆盖到zend安装目录下的plugins下 ... 3. 启动 Zend Studio ...

    C#加密 解密对接java 的加密AES/CBC/PKCS7Padding 转16进制.rar

    C#加密 解密对接java 的加密AES/CBC/PKCS7Padding 转16进制 C#加密解密中的详细整理

    AES加解密(aes128/192/256 ecb cbc cfb ofb ctr)

    包含 aes128/192/256 ecb cbc cfb ofb ctr纯c代码,vs2015工程,快速了解各种模式的加解密调用。参考资源:https://download.csdn.net/download/howiexue/9978483,改编简单明了加解密例子,并且关键地方加了注释。

Global site tag (gtag.js) - Google Analytics