`
marlboro027
  • 浏览: 55212 次
  • 性别: 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/
分享到:
评论

相关推荐

    AES.rar_https ://aes63.com_https://aes63.com/_spreadtw4_接口Ase加密

    AES的核心在于其工作模式,主要有四种:ECB(Electronic Codebook)、CBC(Cipher Block Chaining)、CFB(Cipher Feedback)和OFB(Output Feedback)。其中,CBC模式因为其良好的安全性而被广泛应用。AES的加密...

    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

    ED78AB10E12ECA319C8B825DBB59CFB0_精美学习课件ppt

    #### 1. 文本编辑与格式化 - **基本操作**:通过简单的点击即可修改文本内容,如标题、数字等。 - **字体设置**:在顶部的“开始”面板中可以对字体、字号、颜色以及行间距进行调整。建议正文使用10号字,1.3倍行...

    WIN7冰点.rar

    它的工作原理类似于创建了一个系统快照,当系统出现任何问题时,只需重启电脑,一切就能恢复如初。 描述中提到的“安装完全”,意味着这个压缩包包含了完整的安装程序,用户下载后可以直接进行安装。安装过程中,...

    jave-1.0.2.zip

    Java音乐格式转换工具——Jave 1.0.2 在数字音频的世界里,不同的设备、平台和软件可能支持不同的音乐格式。为了确保音乐能在各种环境下流畅播放,我们需要一种工具来转换音频文件的格式。这就是"jave-1.0.2.zip"所...

    [ios]视频音频缓冲进度

    1. **AVFoundation框架**:在iOS中,AVFoundation框架是处理多媒体内容的核心。它提供了处理音频和视频的强大功能,包括播放、编辑、录制等。为了实现自定义播放器,我们需要深入理解AVPlayer、AVPlayerItem、...

    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....

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

    ### 解决"C:\Users\Administrator\.gradle\caches\jars-1\cache.properties"错误的方法 在进行Android开发时,我们经常会使用Gradle作为构建工具。Gradle通过一个缓存机制来存储已下载的依赖项和其他资源,以提高...

    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 关于破解 ...

    可互操作的Java和JavaScript AES/128/192/256加密算法代码

    本主题主要关注的是如何在Java和JavaScript之间实现可互操作的AES(Advanced Encryption Standard)加密算法,这涉及到128、192和256位的密钥长度。AES是一种广泛应用的块密码,以其高效性和安全性著称,广泛用于...

    dotnetfx_cleanup_tool

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

    aes library.rar

    1. **密钥长度**:AES支持128位、192位和256位三种密钥长度,不同的密钥长度提供了不同级别的安全强度。 2. **加密过程**:AES由多个步骤组成,包括字节替代(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns...

    1998-2023年上市公司研发投入数据.xlsx

    1、时间:1998-2023年 2、来源:上市公司年报 3、指标:证券代码、统计截止日期、数据来源、报表类型、研发人员数量(人)、研发人员数量占比(%)、研发投入金额(元)、研发投入占营业收入比例(%)、研发投入(支出)...

    MIB Browser帮助手册,志于小白第一次接触mib也能够快速上手操作使用,自助手册,在项目组不求人!

    * 完整的 SNMPv3 USM 支持,包括 HMAC-MD5、HMAC-SHA1、HMAC_SHA2、CBC-DES、3-DES、CFB128-AES-128、CFB128-AES-192 和 CFB128-AES-256 算法 * 强大而强大的 SMIv1/SMIv2 MIB 解析器 * IPv6 支持 * 带有规则引擎的 ...

    rijndael_ingles2004.rar

    由于AES算法是公开的,其安全性主要依赖于密钥的保密性,因此密钥管理成为使用AES时的关键问题。正确管理和保护密钥是确保数据安全的重要环节。 在提供的压缩包文件"rijndael_ingles2004.swf"中,可能包含了一个...

Global site tag (gtag.js) - Google Analytics