如下的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/
分享到:
相关推荐
此sql为travel项目的sql,可将其中sql语句全部复制进行执行,即可创建出项目的测试sql。 此sql为travel项目的sql,可将其中sql语句全部复制进行执行,即可创建出项目的测试sql。 此sql为travel项目的sql,可将其中...
完整能运行的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小程序例子源码打包下载适合研究...1.适合学习做毕业设计参考模板。 2.适合程序员学习开发小程序研究用 3.适合小公司换皮做新项目参考使用用
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
曾经网吧风靡很久的超好用还原软件,安装完全 选择要保护的盘,每次重启就会还原,再也不怕中病毒和垃圾文件了
对自定义视频、音频播放器添加缓冲进度条,
音乐格式转换
://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....
该软件用于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 安装破解汉化包 百度云下载包 链接:https://pan.baidu.com/s/1e5XpogDL14X5XzsY1TA6Cw 密码:0i9k 说明: ZendStudio-10-setup 10.5.0安装.zip ZendStudio-10.5.0--SN破解工具.rar 关于破解 ...
原因是由于你的计算机环境里面存在着4.0版本,dotnetfx_cleanup_tool工具只支持1.0-3.5版本,所以没有卸载掉。 办法就是在官网重新下载安装Microsoft .NET Framework 4,安装成功以后,直接安装Microsoft .NET ...
C:\Users\Administrator\.gradle\caches\jars-1\cache.properties (系统找不到指定文件)解决办法
该文件是解决Eclipse中自动部署项目到Tomcat的webapps目录的问题, 本文是对百度空间 IT_狂人 的作品进行的改进, http://hi.baidu.com/it_crazyer/item/8c4e22a8e6bbf51da9cfb773
此软件的打包程序为破解软件,可能会被360提示有风险或木马,请放心使用,关于软件安全问题请看通过virscan.org网站37家主流安全软件的扫描结果http://r.virscan.org/report/b61a34cda1cfb7425fba75a86e19a94a.html ...
雷电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。...
1. 到官方网站下载安装完后, 确保先不要启动程序 http://www.zend.com/en/products/studio/downloads 2. 拷贝破解文件夹Cracked plugins jar下的这个文件覆盖到zend安装目录下的plugins下 ... 3. 启动 Zend Studio ...
C#加密 解密对接java 的加密AES/CBC/PKCS7Padding 转16进制 C#加密解密中的详细整理
包含 aes128/192/256 ecb cbc cfb ofb ctr纯c代码,vs2015工程,快速了解各种模式的加解密调用。参考资源:https://download.csdn.net/download/howiexue/9978483,改编简单明了加解密例子,并且关键地方加了注释。