为什么JVM显示错误的(UTC + 02:00)伊斯坦布尔时区?

时间:2013-07-03 09:37:33

标签: java date jvm timezone jvm-arguments

JVM未显示(UTC + 02:00)伊斯坦布尔的真实日期时间和时区。

例如: 现在时间是伊斯坦布尔下午12:30。


将系统时区更改为(UTC + 02:00)伊斯坦布尔

系统日期:2013年7月3日下午12:30

Java ouput:05:00:00 VET 03.07.2013

JVM uzer.timezone:America / Caracas


将系统时区更改为(UTC-08:00)Pasific Time(美国和加拿大)

系统日期:02:03 AM 03.07.2013

Java ouput:02:30:00 PDT 03.07.2013

JVM uzer.timezone:America / Los_Angeles


将系统时区更改为(UTC + 02:00)Jarusalem

系统日期:2013年7月3日下午12:30

Java ouput:12:30:00 IDT 03.07.2013

JVM uzer.timezone:亚洲/耶路撒冷


这是我的Java环境: java版“1.6.0_37” Java(TM)SE运行时环境(版本1.6.0_37-b06) Java HotSpot(TM)64位服务器VM(内置20.12-b01,混合模式) Windows 8

有没有人解释这种差异?

由于

2 个答案:

答案 0 :(得分:4)

known Java bug。它已在Java 7更新4中修复(请参阅this bug report)。

答案 1 :(得分:3)

回顾其他一些SO问题,这似乎是一个Java-on-Windows问题。请看看 How to use Java timezone id in a Windows (non-Java) application? ,尤其是回答1,它指向可能解决您的映射问题的维基百科链接