gpt4 book ai didi

java - 为什么在这些情况下 JVM 的默认时区不同

转载 作者:行者123 更新时间:2023-11-29 04:36:27 25 4
gpt4 key购买 nike

<分区>

土耳其最近(2016 年 9 月 6 日)决定永久保留夏令时 (DST)。该法案取消了原定于 2016 年 10 月 30 日 04:00:00 结束的夏令时。时钟未更改。

土耳其协调世界时介于 +2 和 +3 之间,因此现在它将保持在 +3。在这里你可以看到

https://www.timeanddate.com/time/change/turkey/ankara?year=2016

*以上信息取自此链接,问题与我的类似。 ( Java timezone in turkey (rejected daylight saving) )

直到今天,制造商已经提供了一些解决方案。例如,Windows 为土耳其配置了一个时区 - (UTC+03:00) Istanbul。但是,关于同一主题的一些问题仍然像我一样继续存在。

我开发的 Java Web 应用程序使用 jdk1.8.0_101。我让它运行在 Apache Tomcat 7.0 上。在这个应用程序中,有时我会使用日期对象。 但是,当我获取日期对象 (new Date()) 时,我发现 JVM 的默认时区与应用程序运行的操作系统(Windows 但不同版本)的时区不同。

我在三个不同的环境中对其进行了测试。我在每个环境中使用相同的 java 代码和相同的 jdk 版本。 Java代码是;

TimeZone zone = TimeZone.getDefault();
System.out.println(zone.getDisplayName());
System.out.println(zone.getID());

测试案例 1) 我的笔记本电脑 - Windows 10 Pro(管理员用户) - 新的 Date() 对象返回 Wed Dec 21 10:00:38 EET 2016 测试代码结果:

Eastern European Time
Asia/Istanbul

enter image description here

==================================

测试案例 2) 我的台式电脑 - Windows 7 Service Pack 1(公司网络上的受限用户) - 新日期对象返回 12 月 21 日星期三 10:00: 38 EET 2016 测试代码结果:

Eastern European Time
Asia/Istanbul

enter image description here

==================================

测试案例 3) 虚拟服务器 - Windows Server 2008 R2 Enterprise(管理员用户) - 新日期对象返回 Wed Dec 21 11:03:11 GMT+03: 00 2016 测试代码结果:

GMT+03:00
GMT+03:00

enter image description here

==================================

**** 在第 3 个测试用例中,虚拟服务器返回正确的日期信息,但在其他情况下,它们返回错误的日期。我知道我可以在获取日期对象时设置时区。但是,该项目很大,这意味着我必须更正很多日期对象。此外,第三个测试用例向我们展示了可以通过配置系统日期/时间来解决问题。我该怎么办?我等待你的推荐。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com