Java 土耳其爪哇时区(拒绝夏令时)
土耳其最近(2016年9月6日)决定永久留在土耳其。该法案取消了原定于2016年10月30日04:00:00结束的DST。时钟没有改变 土耳其的utc时间介于+2和+3之间,因此现在它将停留在+3。 在这里你可以看到 …在维基百科页面上,以及这篇每日新闻文章中 这里他们讨论了,但我在Spring Boot中有一个应用程序 这就是我约会的方式 这显示了现在的小时数Java 土耳其爪哇时区(拒绝夏令时),java,spring,Java,Spring,土耳其最近(2016年9月6日)决定永久留在土耳其。该法案取消了原定于2016年10月30日04:00:00结束的DST。时钟没有改变 土耳其的utc时间介于+2和+3之间,因此现在它将停留在+3。 在这里你可以看到 …在维基百科页面上,以及这篇每日新闻文章中 这里他们讨论了,但我在Spring Boot中有一个应用程序 这就是我约会的方式 这显示了现在的小时数13.50,但现在是14.50。因为我们在+3 我能做什么 我不想使用utc+3,因为明年他们会说,“让我们再次使用+2-+3切换到
13.50
,但现在是14.50
。因为我们在+3
我能做什么
我不想使用utc+3,因为明年他们会说,“让我们再次使用+2-+3切换到夏令时概念”。所以我不能冒险
我不能在未来几周内更改代码,它将在几周后保持永久性
你建议什么是永久性的
还有,我如何制作java?因为对于我的测试linux机器,请看这个
puapp@PU-APP-01:~$java版本
程序“java”可在以下软件包中找到:
*默认jre
*gcj-4.8-jre-headless
*openjdk-7-jre-headless
*gcj-4.6-jre-无头
*openjdk-6-jre-headless
尝试:sudo-apt-get-install
puapp@PU-APP-01:~$
puapp@PU-APP-01:~$Where是java
java:/usr/share/java
puapp@PU-APP-01:~$
puapp@PU-APP-01:~$Where是java
java:/usr/share/java
但在本地,我有java
vegan@vegan:~$java-版本
java版本“1.8.0_111”
Java(TM)SE运行时环境(build 1.8.0_111-b14)
Java HotSpot(TM)64位服务器虚拟机(构建25.111-b14,混合模式)
vegan@vegan:~$
但是本地的并不重要。linux服务器非常重要
对于我们的主机,有java
produp@Produp-app-01:~$ java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
produp@Produp-app-01:~$
最好的方法是更新JDK/JRE,如果它包含新的时区信息。如果未包括,正确的官方方法应该是使用更新时区信息 TZUpdater工具允许您使用最新的时区数据更新已安装的Java开发工具包(JDK)和Java运行时环境(JRE)软件,以适应不同国家/地区的夏时制(DST)变化。Oracle依靠IANA的时区数据库公开提供的时区数据 Oracle建议您使用最新的Oracle Java SE平台JDK或JRE更新版本作为提供时区数据更新和其他产品改进(如安全修复)的首选方法。要查看哪个JDK或JRE更新版本包含您所在地区的更新时区数据,请参阅JRE软件中的时区数据版本。但是,如果您无法使用Oracle的最新JDK或JRE更新版本,或者最新版本上的时区数据不是最新可用的,则TZUpdater工具提供了一种更新时区数据的方法,同时保持其他系统配置和依赖项不变 可在上下载(在“附加资源”一节下) 可以找到有关您的特定案例的信息(您还可以看到这些信息在JRE版本中不可用): 土耳其从EET/EEST(+02/+03)转换为永久+03,生效日期为2016-09-07。 新闰秒2016-12-31 23:59:60 UTC根据IERS公告C 52 有关如何使用该工具的说明,请参见说明: TZUpdater工具修改用于执行该工具的JDK/JRE软件实例。每次执行都会修改JDK/JRE软件的单个映像。要将该工具管理到JDK/JRE软件的多个实例,请参阅系统范围使用一节 例如,下面的命令将使用最新信息更新JRE,其中应包括土耳其夏令时的更改 java-jar tzupdater.jar-l
请注意,有一个电流: 由于IANA维护的tzdata捆绑包中的格式更改,TZUpdater工具在解析tzdata2016.tar.gz资源捆绑包时无法确定tzdata版本 按照以下链接中的步骤操作,以便能够使用IANA提供的最新tzdata捆绑包。修正后,答案的这一部分将被删除。答案正确,应被接受。任何关心土耳其时间的人都需要立即更新与Java捆绑的
tz
数据库
的tzdata2016g
版本有您需要的土耳其更改
土耳其从EET/EEST(+02/+03)转换为永久+03,生效日期为2016-09-07
而tzdata2016h版本在20世纪80年代和90年代对土耳其进行了一些修复
在土耳其,1986-1990年的过渡时间是标准时间01:00而不是02:00,1994年春季的过渡时间是3月20日,而不是3月27日
但是当前的JavaSE8更新111和112具有更早的版本tzdata2016f
tz
自Java 8更新111起未更新
我在下面的实验表明,土耳其政府在最后一刻对时区进行的这一改变并没有包括在与Oracle的最新Java更新Java 8 update 111捆绑在一起的版本中
获取DST预定结束当天的第一个时刻。然后一次加上一个小时,看看时钟是否跳动
System.out.println ( "java.version: " + System.getProperty ( "java.version" ) );
ZoneId z = ZoneId.of ( "Europe/Istanbul" );
ZonedDateTime zdt = ZonedDateTime.of ( 2016 , 10 , 30 , 0 , 0 , 0 , 0 , z );
System.out.println ( " zdt: " + zdt );
System.out.println ( "zdt + 1: " + zdt.plusHours ( 1 ) );
System.out.println ( "zdt + 2: " + zdt.plusHours ( 2 ) );
System.out.println ( "zdt + 3: " + zdt.plusHours ( 3 ) );
System.out.println ( "zdt + 4: " + zdt.plusHours ( 4 ) );
System.out.println ( "zdt + 5: " + zdt.plusHours ( 5 ) );
System.out.println ( "zdt + 6: " + zdt.plusHours ( 6 ) );
跑步的时候。凌晨4点,时钟跳回到原来的03:00。这意味着DST结束了,但如果我们是最新的土耳其法律,就不应该结束
java.version:1.8.0_111
zdt:2016-10-30T00:00+03:00[欧洲/伊斯坦布尔]
zdt+1:2016-10-30T01:00+03:00[欧洲/伊斯坦布尔]
zdt+2:2016-10-30T02:00+03:00[欧洲/伊斯坦布尔]
zdt+3:2016-10-30T03:00+03:00[欧洲/伊斯坦布尔]
zdt+4:2016-10-30T03:00+02:00[欧洲/伊斯坦布尔]
zdt+5:2016-10-30T04:00+02:00[欧洲/伊斯坦布尔]
zdt+6:2016-10-30T05:00+02:00[欧洲/伊斯坦布尔]
我们的spring boot docker应用程序在linux机器上。如果土耳其再次开始使用日光,应该
System.out.println ( "java.version: " + System.getProperty ( "java.version" ) );
ZoneId z = ZoneId.of ( "Europe/Istanbul" );
ZonedDateTime zdt = ZonedDateTime.of ( 2016 , 10 , 30 , 0 , 0 , 0 , 0 , z );
System.out.println ( " zdt: " + zdt );
System.out.println ( "zdt + 1: " + zdt.plusHours ( 1 ) );
System.out.println ( "zdt + 2: " + zdt.plusHours ( 2 ) );
System.out.println ( "zdt + 3: " + zdt.plusHours ( 3 ) );
System.out.println ( "zdt + 4: " + zdt.plusHours ( 4 ) );
System.out.println ( "zdt + 5: " + zdt.plusHours ( 5 ) );
System.out.println ( "zdt + 6: " + zdt.plusHours ( 6 ) );