zoukankan      html  css  js  c++  java
  • 夏令时 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代码

     

    [java] view plaincopy
     
    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

  • 相关阅读:
    python基础---内置类型
    python基础---内置常量
    python基础---内置函数
    数据增强---CutMix
    数据增强---Mixup
    机器学习笔记---评估方法
    深度学习笔记-上溢和下溢
    线性代数笔记-子空间
    tensorflow2学习笔记---模块、层和模型
    tensorflow2学习笔记---Graph和tf.function
  • 原文地址:https://www.cnblogs.com/youngjoy/p/4441570.html
Copyright © 2011-2022 走看看